私は現在 ここで示唆したプラグインに取り組んでいます そしてこれまでのところ私はパズルの1つの部分だけが足りずにすべてをコーディングすることに成功しました。
これがcurrent_user
の総コメント数を取得する方法です。
global $wpdb, $current_user;
get_currentuserinfo();
$userID = $current_user->ID;
$where = 'WHERE comment_approved = 1 AND user_id = ' . $userID ;
$comment_count = $wpdb->get_var("SELECT COUNT( * ) AS total
FROM {$wpdb->comments}
{$where}");
echo 'Total Comments: ' . $comment_count;
他のユーザーの投稿でcurrent_user
の総コメント数をecho
にしたいので、著者自身の投稿のコメントは数えたくありません。そのようなことは可能ですか?そして、もしそうなら、どうですか?
私はこれを行うWordPressの機能を知らないので、あなたはこの種のクエリを試してみることができます(未テスト)。
function get_custom_user_comments_count( $uid ){
global $wpdb;
$sql = "SELECT COUNT(*) as total
FROM {$wpdb->comments} as c
JOIN {$wpdb->posts} as p ON p.ID = c.comment_post_ID
WHERE c.comment_approved = '1'
AND p.post_status ='publish'
AND p.post_type ='post'
AND p.post_author != c.user_id
AND c.user_id = %d";
$comment_count = $wpdb->get_var( $wpdb->prepare( $sql, $uid ) );
return $comment_count;
}
そしてこれを次のように使います。
global $current_user;
get_currentuserinfo();
echo 'Total Comments: ' . get_custom_user_comments_count( $current_user->ID );
これは、ユーザーがログインしたときにコメントが書き込まれることを前提としているため、wp_commentsテーブルのuser_id
列にデータが入力されます。
もう1つの方法は、ユーザーメタ内のユーザーごとのコメント数を収集することです。例えばcomment_post
アクションにフックすることを試みることができます。このアプローチは、ユーザーがサイトにコメントを書く前に実装することができます。