【WP】カスタム投稿タイプで記事を「先頭に固定表示」させる方法

WordPressの「投稿」には「この投稿を先頭に固定表示」という機能がデフォルトでありますが、
カスタム投稿タイプでは表示されません。

カスタム投稿タイプでも、トップページで特定の記事を先頭に持って行く「この投稿を先頭に固定表示」機能を追加する設定をメモしておきます。新着情報をカスタム投稿タイプで作成している時等に便利です。

1)プラグイン「Seamless Sticky Custom Post Types」をインストール

「Seamless Sticky Custom Post Types」をインストールするだけで、カスタム投稿タイプでも「この投稿を先頭に固定表示」機能を使えるようになります。

2)「先頭固定」を有効にできるテンプレートの設定。「get_posts」ではなく「WP_Query」

「この投稿を先頭に固定表示」機能(以下「先頭固定」)を有効にさせるには、記事の一覧表示を「get_posts」ではなく「WP_Query」にする必要があります。

カスタム投稿タイプのスラッグが「news」の記事一覧表示

<?php
	$the_query = new WP_Query(array(
		'post_type' => array('news')
	));?>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
	<p>ここにリピートさせる内容を入力</p>
<?php endwhile; ?>
<?php wp_reset_postdata(); ?>

カスタム投稿タイプのスラッグが「news」の記事を3件表示

<?php
	$list_cnt = 3; //表示させたい件数
	$sticky = get_option('sticky_posts'); //先頭固定の記事
	if ( !empty($sticky) ) $list_cnt -= count($sticky); //もし先頭固定の記事があったら、その件数を「$list_cnt」の値から引く
	$the_query = new WP_Query(array(
		'post_type' => array('news'),
		'posts_per_page' => $list_cnt
	));?>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
	<p>ここにリピートさせる内容を入力</p>
<?php endwhile; ?>
<?php wp_reset_postdata(); ?>>

「’posts_per_page’ => 3」のように直接数値を入れると、例えば先頭固定記事が1件あった場合、記事が4件表示になってしまいます。
そのため上記のように、先頭固定記事の有無を確認し、あった場合は先頭固定記事の件数を引いた数値を設定する必要があります。

参考記事
WordPressのWP_Query関数を使っていても「この投稿を先頭に固定表示」を使うと記事件数がはみ出してしまう問題を解決するソースコード | コワーキングスペース7F

今回の記事は上記ページを参考に自分なりにまとめた記事になります。情報をありがとうございます!

コメント

タイトルとURLをコピーしました