web-dev-qa-db-ja.com

ループ外の投稿ごとのコメント数を表示できません

ループ外の投稿ごとのコメントの金額を表示するにはどうすればよいですか。私はすでに関数でこれを試してみました:

' . get_comments_number . '、しかしそれはスクリーン上にテキスト "array"を出力しました...それを動かすために何をしなければなりませんか?

私のsingle.phpでは、これを使用していくつかのリスト項目(投稿)を出力しました。

<ul class="wow dude">
<?php echo wowPosts(2); ?>
</ul>

そして私のfunctions.phpで私はこれを使用しました:

function wowPosts($num) {
    global $wpdb;

    $posts = $wpdb->get_results("SELECT comment_count, ID, post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , $num");

    foreach ($posts as $post) {
        setup_postdata($post);
        $id = $post->ID;
        $title = $post->post_title;
        $count = $post->comment_count;
        $comment_count = get_comment_count($post->ID);
        $all_comments = get_comment_count( array ( 'post_id' => get_the_ID() ) );

        if ($count != 0) {
            $popular .= '<li>';
            $popular .= '<a href="' . get_permalink($id) . '" title="' . $title . '">' . $title . '</a> '. count( $all_comments ) . ' ';
            $popular .= '</li>';
        }
    }
    return $popular;
}

ご覧のとおり、最初のコードを編集してこの関数に実装したので、リストアイテムごとに(投稿ごとに)使用できます。

2
user1627363

特定の投稿IDに対するコメントの総数だけを表示するには、count引数を使用します。

echo get_comments(
    array (
        // post ID
        'post_id' => 149,
        // return just the total number
        'count'   => TRUE
    )
);

または単に使用する

// Argument: Post ID
echo get_comment_count( 149 );

現在のページの全投稿の全コメントの総数を取得するには、投稿オブジェクトのcomment_countプロパティを使用してそれらを合計します。

echo array_sum(
    wp_list_pluck( $GLOBALS['wp_query']->posts, 'comment_count' )
);
4
fuxia