$wp_queryのpost_countとfound_posts2014/7/20

まじ引っ掛かったので備忘録。WordPressでWP_query回す時に、数字で区切って処理したい時あるじゃないですか。例えば3列に縦に時系列に並べて綺麗に収めるみたいな。そういうの大概マークアップ的には3つの塊を区切ってあったりするわけですが。で、ああここは割り算せねばと思って、割り算するためには全体の投稿数がいくつあるか調べなきゃ、というわけでその方法を調べるわけです。

で、ああ。

<?php $wp_query->post_count; ?>

ってやるんだなと思ったんですが、違った。

<?php $wp_query->found_posts; ?>

でした!!!

<?php $cnt = 1;?>
<?php $query = new WP_query('posts_per_page=-1) ?>
<?php if(have_posts()) : while ($query->have_posts()) : $query->the_post(); ?>
<?php $count = $wp_query->found_posts; ?>
<?php $cols = ceil($count / 3); ?>
<?php if($cnt % $cols == 1): ?><div class="box"><?php endif; ?>
        <article>
          <p class="title"><?php the_title(); ?></p>
        </article>
<?php if($cnt % $cols == 0): ?></div><?php endif; ?>
<?php endwhile; ?>
<?php endif; ?>

こういう入れ子の奴って、ちと閉じる位置間違えると大いに崩れるのですが、条件式間違ってないしなんだろうと思って、困って$countのところechoしたら全部で13件あるのに10って表示されまして。。。

関数リファレンス/WP Query – WordPress Codex 日本語版

$post_count 表示される投稿の数。
$found_posts 現在のクエリ変数に一致する投稿の合計数。

これ日本語読んでもぶっちゃけあまり違いわからないのですが、記事表示件数を10件としていたら、全部表示するクエリ投げてても10件と表示されるのが$post_countみたい。$found_postはだからこの場合、posts_per_page=-1、つまり全件取得するクエリ投げてるので、13件が表示されたと。

理由わかれば他愛もないんですけどね。これだからパソコン怖い。

ひとり仕事: フリーランスという働き方
(2012-10-5)
売り上げランキング: 14,705
100円
本格ビジネスサイトを作りながら学ぶ WordPressの教科書
プライム・ストラテジー株式会社
ソフトバンククリエイティブ
売り上げランキング: 5,208
WordPressプロフェッショナル養成読本 [Webサイト運用の現場で役立つ知識が満載! ] (Software Design plus)
高野直子 後藤賢司 染谷昌利 岡本雄樹 深海寛信 岡本 渉 松本悦宜
技術評論社
売り上げランキング: 24,886
いちばんやさしい WordPress の教本 人気講師が教える本格Webサイトの作り方
石川栄和 大串肇 星野邦敏
インプレスジャパン
売り上げランキング: 2,127