The Loopの外にユーザーの総コメント数を表示するにはどうすればよいですか。
このコードを使用して、ループ内のコメント数を表示します:
<?php
global $wpdb;
$user_id = $post->post_author;
$where = 'WHERE comment_approved = 1 AND user_id = ' . $user_id ;
$comment_count = $wpdb->get_var(
"SELECT COUNT( * ) AS total
FROM {$wpdb->comments}
{$where}
");
echo 'Comments: <strong>' . $comment_count . '</strong>';
?>
それはループの内側で完全に機能します。そのコードをループ外で機能させるために、$user_id = $post->post_author;
を$user_id = get_the_author_meta( 'ID' );
に変更しましたが、機能しませんでした。
私が行ったことが最も近いのはこのコードです。
<?php
global $wpdb;
$where = 'WHERE comment_approved = 1 AND user_id <> 0';
$comment_counts = (array) $wpdb->get_results("
SELECT user_id, COUNT( * ) AS total
FROM {$wpdb->comments}
{$where}
GROUP BY user_id
", object);
foreach ( $comment_counts as $count ) {
$user = get_userdata($count->user_id);
echo 'Comments: ' . $count->total . '
';
}
?>
しかし、このエコーコメントは、すべてのユーザーに対してこのようにカウントされます。 "コメント:28コメント:11コメント:55" etc
ループの外側のユーザーのコメント数を表示するために/ ** /に使用できるコード?
あなたはすでに多かれ少なかれコードを持っています、あなたはただコードをわずかに変える必要があります。
how とは言っていませんが、ユーザーIDを取得していますが、確認したいユーザーIDがある場合は、ループの外で行うのは非常に簡単です。
これは簡単な例です:
$userid=1;
$comment_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) AS total FROM $wpdb->comments WHERE comment_approved = 1 AND user_id = %s", $userid ) );
echo "Number of comments for user $userid is $comment_count";
注:承認されていないコメントを含める場合は、 "comment_approved = 1"と表示されている部分で承認されているコメントのみをカウントします。