web-dev-qa-db-fra.com

Exclure les publications avec post_content vide dans wp_query

est-il possible d'exclure des publications avec un contenu de publication vide d'un wp_query?

$args = array(
    'post_type' => array('post'),
    'posts_per_page' => 5,
    'post_status' => 'publish',
);

$query = new WP_Query($args);
$posts = $query->posts;

foreach($posts as $post) {
    var_dump($post->post_content);
}

Le faire à l'intérieur de la boucle comme if($post->post_content !== '') { } n'est pas une option. Parce que ma liste n'aura pas 5 éléments.

1
snuwie

Ce n'est pas possible avec une requête standard WP, et vous devrez utiliser l'utilisation de posts_where avant que le WP_Query ne soit appelé.

function the_dramatist_filter_where($where = ''){
    $where .= " AND trim(coalesce(post_content, '')) <>''";
    return $where;
}

Dans ce qui précède, nous sélectionnons simplement les publications dans lesquelles la colonne post_content n'est pas vide.

Ajoutez ensuite le filtre.

add_filter('posts_where', 'the_dramatist_filter_where');

Maintenant, effectuez la requête.

$query = new WP_Query(array('post_type' => 'post', 'posts_per_page' => 8));

Et ensuite, lorsque vous avez terminé, supprimez le filtre de la requête pour qu'il n'interfère pas.

remove_filter('posts_where', 'the_dramatist_filter_where');
2
CodeMascot