query_posts();をやめてget_posts();に!
2017年3月12日
ずいぶん前から言われていたことではあるが、query_posts();はもはや非推奨なので、実際にquery_posts();ではなく、get_posts();を使ってみたので覚書。
発端はquery_postsを使った固定ページへの特定カテゴリー記事の表示で、まずwp_reset_query();を書かずにいたため、その後のカスタフィールドテンプレートの値が取得できずに悩んでしまったのがきっかけ(ダサッ)。
<?php if (have_posts()) : ?>
<?php query_posts('showposts=10&category_name=event_if'); ?>
<?php while (have_posts()) : the_post(); ?>
<p class="line_b">
<span class="if_date">
<?php the_time('Y年m月d日'); ?>
</span>
<span class="if_info">
<?php remove_filter ('the_content', 'wpautop'); ?><?php the_content(); ?>
</span>
<?php endwhile;endif; ?>
を以下のようにget_posts();に変更。
<?php $posts = get_posts('showposts=10&category_name=event_if'); global $post; ?>
<?php if($posts): foreach($posts as $post): setup_postdata($post); ?>
<p class="line_b">
<span class="if_date">
<?php the_time('Y年m月d日'); ?>
</span>
<span class="if_info">
<?php remove_filter ('the_content', 'wpautop'); ?><?php the_content(); ?>
</span>
<?php endforeach; endif; wp_reset_postdata(); ?>
結局wp_reset_postdata();は必要!!