This seems trivial but I can’t get it to work. Here’s my code:

        $args = array(
            'numberposts'     => -1,
            'eventcategory'   => 'nice-events',
            'post_type'       => 'event',
            'post_status'     => 'publish' 
        );

        var_dump(get_posts($args));

As you can see, my taxonomy is eventcategory and the term is nice-events. There are actually over 50 terms and regardless of what term I use in place of nice-events I always get the same result: all of the posts. So the term is being ignored and I have no idea why.

1 Answer
1

You cannot make up your own arguments – rather than replacing the 'category' argument with your taxonomy name, use 'tax_query'.

See “taxonomy parameters” section of the codex on get_posts.

$args = array(
    'post_type' => 'event',
    'post_status' => 'publish',
    'tax_query' => array(
        array(
            'taxonomy' => 'eventcategory',
            'field' => 'slug',
            'terms' => 'nice-events',
        ),
    ),
);


$your_query = get_posts( $args );

// do something with $your_query

Alternatively, you could make use of the WP_Query class:

$args = array(
    'posts_per_page' => -1,
    'post_type' => 'event',
    'post_status' => 'publish',
    'tax_query' => array(
        array(
            'taxonomy' => 'eventcategory',
            'field' => 'slug',
            'terms' => 'nice-events'
        ),
    ),
);


$your_query = new WP_Query( $args );

// do something with $your_query

Leave a Reply

Your email address will not be published. Required fields are marked *