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)
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
");
}
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;
}
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).
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; ?>