私は私のワードプレスサイトに2レベルのコメントしか選択していません。最初のレベルのコメント数を表示するにはどうすればいいですか? (深さ-1)
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
");
}
この答えからのコード を使用し 、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;
}
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が指定されていない場合は現在のコメント数を返します)。
これまでの答えに基づいた、完全に機能するコードです。
<?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; ?>