私は、投稿、ユーザー、そして合計でコメントを数える方法を知っていますが、私は
特定の投稿タイプに投稿されたコメントの合計数に問題があります。
私は私がすべての記事を通してループし、それぞれを数えることができると思います
コメントしかし私はもっと早く、より少ないものを探しています
リソースが高い
あなたの助けに感謝
これまでのところこれを得ました(これは悪い方法だと思いますが、私は間違っているかもしれません):
/*** ALL COMMENTS COUNT BY POST TYPE ***/
function countCptCommentsTotal() {
// FAQ ARGS
$faqStatsArgs = array(
'post_type' => 'some_post_type',
'post_status' => 'publish',
'posts_per_page' => -1
);
$faqstats_query = new WP_Query($faqStatsArgs);
// THE LOOP
$allAnswers = 0;
while ($faqstats_query->have_posts()) {
$faqstats_query->the_post();
$curfaqid = get_the_ID();
$allAnswers = $allAnswers + countPostComments($curfaqid);
}
wp_reset_query();
return $allAnswers;
}
最初にあなたのカスタム投稿タイプexのすべての投稿IDを取得するための単純なサブクエリを持つ直接SQLについてはどうでしょうか。
function get_all_comments_of_post_type($post_type){
global $wpdb;
$cc = $wpdb->get_var("SELECT COUNT(comment_ID)
FROM $wpdb->comments
WHERE comment_post_ID in (
SELECT ID
FROM $wpdb->posts
WHERE post_type = '$post_type'
AND post_status = 'publish')
AND comment_approved = '1'
");
return $cc;
}
使用法:
$total_comments = get_all_comments_of_post_type('some_post_type');
単にcomment_count
行をsum
sする単純なMySQLクエリを実行するだけです。例として次のプラグイン:
<?php
namespace WPSE;
/**
* Plugin Name: (#134338) Get total Comment Count
* Plugin URl: http://wordpress.stackexchange.com/q/134338
*/
defined( 'ABSPATH' ) or exit;
function commentCountTotal( $postType = 'post' )
{
global $wpdb;
return $wpdb->query( $wpdb->prepare(
"SELECT sum( comment_count )
FROM (
SELECT comment_count
FROM {$wpdb->posts}
WHERE post_type = '%s'
AND post_status = 'publish'
AND comment_count > 0
LIMIT 0 , 999
) as count",
$postType
) );
}
それを呼び出すだけで、この投稿タイプの合計金額を表示できます。
echo \WSPE\commentCountTotal( 'your-post-type' );