$wp_queryのpost_countとfound_posts
まじ引っ掛かったので備忘録。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件が表示されたと。
理由わかれば他愛もないんですけどね。これだからパソコン怖い。

加藤 康祐 / 企画・設計
プランナー、デザイナー。加藤康祐企画設計代表。Webデザインを入り口に、2005年よりフリーランスとしてのキャリアスタート。主な仕事としてベンチャー企業でのサービスのUXデザイン、独法との防災メディアの運営、社会的養護の子どもたちの自立を支援するNPOのサポート。ラグビーと料理、最近イラスト。
是非、フォローしてください!
Twitter / Instagram
売り上げランキング: 14,705
100円
フリーランスとして働き始めるってどういうことだったのか?フリーランスとして働くってどういうことなのか?フリーランスが目指すことってなんなのか?5年間の自分の経験から書きました。(2010年執筆)