get_postsだと「この投稿を先頭に固定表示」が無効

get_postsを使って記事一覧を表示していました。
いつもカスタム投稿タイプで作ったコンテンツだったので気づかなかったんですけど、「投稿」で作成した記事一覧をget_postsで出していると、「この投稿を先頭に固定表示」が効かないなとある日気づきました。

なんでや。

さっそく検索してみるとこちらの記事にget_posts関数だと先頭位置固定を無効にすると書いてあって、WP_Queryを使うと書かれていました。
さっそくそちらに変更したらちゃんと動いたのでメモです。
ありがとうございました。

WordPressで先頭位置固定の記事が固定されない(たりすまんサーバ技術録)

get_postsだった時

<ul>
<?php global $post;
$args = array( 'posts_per_page' => -1, 'post_type'=> 'post');
$myposts = get_posts( $args );
foreach ( $myposts as $post ) :
setup_postdata( $post );
$cat = get_the_category();
$cat = $cat[0]; ?>
<li><?php echo get_post_time('Y/m/d'); ?><span class="<?php echo $cat->category_nicename; ?>"><?php echo $cat->cat_name; ?></span><a href="<?php the_permalink();?>"><?php the_title(); ?></a></li>
<?php endforeach;
wp_reset_postdata(); ?>
</ul>

WP_Queryに変更した後

<ul>
<?php $the_query = new WP_Query( 'posts_per_page=-1&post_type=post' );
if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post();
$cat = get_the_category();
$cat = $cat[0]; ?>
<li><?php echo get_post_time('Y/m/d'); ?><span class="<?php echo $cat->category_nicename; ?>"><?php echo $cat->cat_name; ?></span><a href="<?php the_permalink();?>"><?php the_title(); ?></a></li>
<?php endwhile;
endif;
wp_reset_postdata(); ?>
</ul>
表示されるHTML
<ul>
<li>【記事公開日】<span class="【カテゴリースラッグ】">【カテゴリー名】</span><a href="【記事URL】">【記事タイトル】</a></li>
</ul>

この記事にコメントを残す