web-dev-qa-db-ja.com

深さ1のget_comments_number(レベル1)(1投稿)

私は私のワードプレスサイトに2レベルのコメントしか選択していません。最初のレベルのコメント数を表示するにはどうすればいいですか? (深さ-1)

3
Mathieu

Wp_commentsテーブルで、comment_parentが0の場合、それは第1レベルのコメントです。

function get_num_toplevel_comments() {
    global $wpdb;

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

この答えからのコード を使用し 、1つだけ!を削除します。

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

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" );

}

使い方は here と同じです。特定の投稿に対するトップレベルのコメント数を返します(idが指定されていない場合は現在のコメント数を返します)。

0
GDY

これまでの答えに基づいた、完全に機能するコードです。

  <?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