2

I want to list recent published posts of my wp blog and exclude certain posts of some categories. The following code works fine, 10 recent posts are listed and posts in the listed categories are ignored. However, draft posts are listed as well.

$args = array( 'numberposts' => '10', 'tax_query' =>
 array(
     'post_type' => 'post',
     'post_status' => array( 'publish' ),
     'tax_query' => array(
         'relation' => 'AND',
         array(
             'taxonomy' => 'category',
             'field' => 'id',
             'terms' => array( 10, 11, 57 ),
             'operator' => 'NOT IN',
         ),
     ),
 )
);



$recent_posts = wp_get_recent_posts(  $args );
foreach( $recent_posts as $recent ){
    echo '<li><a href="' . get_permalink($recent["ID"]) . '">'.   $recent["post_title"].'</a> </li> ';
    }
?>

The line with 'post_status' => array( 'publish' ), or 'post_status' => 'publish', does not work. Any clue why?

5

The arguments you are using are wrong. They should be:

$args = array(
            'numberposts' => '10',
            'post_type'   => 'post',
            'post_status' =>'publish',
            'tax_query'   => array(
                'taxonomy' => 'category',
                'field' => 'id',
                'terms' => array( 10, 11, 57 ),
                'operator' => 'NOT IN',
            )
 );

Or shorter:

$args = array(
            'numberposts'        => '10',
            'post_type'          => 'post',
            'post_status'        => 'publish',
            'category__not_in'   => array( 10, 11, 57 )
 );

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.