web-dev-qa-db-fra.com

get_comments_number of depth-1 (Niveau 1) (1 message)

Je n'ai sélectionné que 2 niveaux de commentaire pour mon site wordpress. Comment puis-je afficher le nombre de commentaires du premier niveau? (Profondeur 1)

3
Mathieu

Dans la table wp_comments, si comment_parent est égal à 0, il s'agit d'un commentaire de premier niveau.

function get_num_toplevel_comments() {
    global $wpdb;

    return $wpdb->get_var("
        SELECT COUNT(*) 
        FROM $wpdb->comments
        WHERE comment_parent = 0
    ");
}
2
akTed

Utilisez le code de cette réponse et supprimez un seul !:

add_filter( 'comments_clauses', 'wpse_78628_top_comments_only' );

$comments = get_comments();

remove_filter( 'comments_clauses', 'wpse_78628_top_comments_only' );

function wpse_78628_top_comments_only( $clauses )
{
    $clauses['where'] .= ' AND comment_parent = 0';
    return $clauses;
}
0
fuxia

Basé sur la réponse de akTed :

function get_top_level_comments_number( $post_id = 0 ) {

    global $wpdb, $post;

    $post_id = $post_id ? $post_id : $post->ID;

    return $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->comments WHERE comment_parent = 0 AND comment_post_ID = $post_id" );

}

Utilisation identique à ici … Retourne le nombre de commentaires de premier niveau pour un article spécifique (ou celui en cours si aucun identifiant n'est fourni).

0
GDY

voici un code de travail complet, basé sur les réponses précédentes.

  <?php
add_filter( 'comments_clauses', 'wpse_78490_child_comments_only' );

function wpse_78490_child_comments_only( $clauses )
{
    $clauses['where'] .= ' AND comment_parent != 0';
    return $clauses;
}
  $count = get_comments( array('post_id' => $post->ID, 'count' => true) ); echo $count; ?>
0
user3003106