イベントというカテゴリがあります。 1つの投稿に割り当てられています。そこで私は以下のループを作成しました:
$args = array ('category_name' => 'events', 'posts_per_page' => 4, 'orderby' => 'date', 'order' => 'DESC' );
$category_posts = new WP_Query($args);
if ($category_posts->have_posts()) {
while ($category_posts->have_posts()) {
$category_posts->the_post();
var_dump($category_posts->the_post());
?>
<div class="col-md-6">
<?php $category_posts->the_post_thumbnail(array('class' => 'events-image')); ?>
</div>
<div class="col-md-6">
<h4><?php echo $category_posts->the_title(); ?></h4>
<span class="date"><?php echo date('M j, Y', $category_posts->get_the_date()); ?></span>
<p><?php echo implode(' ', array_slice(str_Word_count($category_posts->the_content(), 2), 0,120)); ?> [...]</p>
</div>
<?php
}
}
ここに入ってきてvar_dump
を実行しているvar_dump($category_posts->the_post());
に注目してください。しかし出力はNULL
です。 wtf?
混乱しているのは、投稿があり、while文の中に入っているのに$category_posts->the_post()
がnullであるということです。これはほとんど意味がありません。
order_by
はorderby
に変更されましたWord_press codexに従って、the_post() "The Loopで投稿のインデックスを繰り返します。次の投稿を取得し、投稿を設定し、 'in the loop'プロパティをtrueに設定します。"これはすべてpostオブジェクト自身の中で起こります。
投稿が1つしかなく、the_postを2回実行すると、投稿数の最後に到達します。この場合、the_postのvar_dumpを実行しても関数は実行されます。そのため、以下のような結果は表示されません。
また、 "この関数は値を返しません。"
何も返さない関数の結果をダンプしているため、var_dumpは常にnullを返すことになります。
便利な結果が欲しい場合は、var_dump($ category_posts)はpostオブジェクトを返します。これには見つかった投稿やその他の情報が含まれます。 - > the_postは単にpostオブジェクト自身のメソッドです。