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();は必要!!