web-dev-qa-db-ja.com

ループに入る前に投稿の総数を知る

ループが始まる前に投稿の総数を知る方法はありますか?私は2つのループを使うことを考えています。最初のものはカウントをしますが、2番目のものはコンテンツを扱います。しかし、私はこのアプローチが「優雅」だとは思わない。他の解決策はありますか?

2
Daniel

functions.php:

function wpse8170_get_posts_count() {
    global $wp_query;
    return $wp_query->post_count;
}

index.php:

if (have_posts()) :
    echo '<h1>' . wpse8170_get_posts_count() . ' Posts Found</h1>';

    while ( have_posts() ) : 
        the_post();
        //...
    endwhile;
endif;
7
Eugene Manuilov

特定のクエリの全投稿数は$GLOBALS['wp_query']->found_postsにあります。

あなたが見ているページだけの全投稿数は$GLOBALS['wp_query']->post_countにあります。

利用可能なすべての変数を確認するには、次のようにテストします。

add_action( 'loop_start', function() {
    print '<pre>'
        . htmlspecialchars(
            print_r( $GLOBALS['wp_query'], TRUE ),
            ENT_QUOTES,
            'utf-8',
            FALSE
        )
        . '</pre>';
});
2
fuxia