web-dev-qa-db-fra.com

Compter tous les commentaires d'un type d'article personnalisé

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;
}
1
Sagive SEO

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');
1
Bainternet

Faites simplement une requête MySQL simple qui sums 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' );
1
kaiser