web-dev-qa-db-fra.com

Requête messages avec plus de 20 commentaires

Existe-t-il un moyen simple d’interroger les publications avec un nombre de commentaires supérieur à un certain nombre?

Par exemple, je souhaite répertorier uniquement les publications contenant plus de 20 commentaires.

$args = array(
    'post_type' => 'post',
    'post_status' => 'publish',

    'posts_per_page' => 25,

    // Something like this
    'comments_query' => array(
        array(
            'value' => 20,
            'type' => 'numeric',
            'compare' => '>=',
        ),
    )
);

$query = new WP_Query( $args );
2
Swen

WP_Query ne prend actuellement pas en charge l'interrogation à l'aide du champ comment_count, mais un correctif est proposé pour cette fonctionnalité. Voir le ticket Trac n ° 28399 . Mise à jour: # 28399 a été corrigé et devrait atterrir dans la version 4.9

En attendant, voici une solution de contournement basée sur des informations provenant de cet article qui modifiera la clause where d'une requête et vous permettra de limiter le nombre de publications. retournés en fonction de leur nombre de commentaires.

Ajoutez ce code à votre functions.php ou à un plugin:

// Modify the where clause to include only posts with 20 or more comments
function wpse_post_where_comment_count( $where ) {
    // Don't fire more than once:
    remove_filter( current_filter(), __FUNCTION__ );

    return "{$where} AND {$GLOBALS['wpdb']->posts}.comment_count >= 20";
}

Ajoutez ce code à votre modèle:

add_filter( 'posts_where', 'wpse_post_where_comment_count', 10, 1 );
$query = new WP_Query( [
    'post_type'      => 'post',
    'post_status'    => 'publish',
    'posts_per_page' => 25,
] );

if ( $query->have_posts() ) {
    while ( $query->have_posts() ) { $query->the_post();
        the_title();
    }
}
2
Dave Romsey