Je sais comment compter les commentaires par publication, utilisateur et au total, mais je suis
ayant des difficultés à obtenir le nombre total de commentaires publiés dans un type de message spécifique .
Je suppose que je peux parcourir tous les messages et compter chacun
commentaires mais je cherche quelque chose de plus rapide et moins
ressource coûteuse
Apprécier ton aide
Je l'ai eu jusqu'à présent (je pense que c'est une mauvaise façon mais je pourrais me tromper):
/*** 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;
}
Que diriez-vous de SQL direct avec une simple sous-requête pour obtenir d’abord tous les identifiants de post de votre type de post personnalisé, par exemple:
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;
}
Utilisation:
$total_comments = get_all_comments_of_post_type('some_post_type');
Faites simplement une requête MySQL simple qui sum
s la rangée comment_count
. Le plugin suivant à titre d'exemple:
<?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
) );
}
Vous pouvez ensuite simplement l'appeler pour afficher le montant total de ce type de publication.
echo \WSPE\commentCountTotal( 'your-post-type' );