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

PAGE TOP