web-dev-qa-db-ja.com

なぜこれはnullとして戻ってくるのですか?それは間違っている。1つの投稿があります

イベントというカテゴリがあります。 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であるということです。これはほとんど意味がありません。

更新1

  • コメント投稿者によって提案された引数の固定配列。 order_byorderbyに変更されました
1
TheWebs

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オブジェクト自身のメソッドです。

0
Hybrid Web Dev