ウェブサイトをお持ちの場合、他の投稿よりも重要な投稿がいくつかあるでしょう。訪問者にこれらの投稿を最初に確実に表示させる方法の1つは、ページの一番上に配置することです。
WordPressの固定投稿機能を使用すると、標準の投稿でこれを行うことができます。しかし、ウェブサイトでカスタム投稿タイプを使用している場合、これらの固定投稿は期待どおりにページの上部に表示されません。
この記事では、カスタム投稿タイプに目立つ投稿機能を追加し、カスタム投稿タイプアーカイブページに表示する方法を説明します。

WordPressカスタム投稿をスティッキーにする理由
標準の投稿やページとは異なる形式でWordPressウェブサイトのコンテンツを作成している場合、おそらくすでにカスタム投稿タイプを使用しているでしょう。例えば、書籍レビューサイトを運営している場合、書籍レビューという投稿タイプを作成しているかもしれません。
カスタム投稿タイプアーカイブの最上部に最も重要なコンテンツを配置することを検討してください。これは、詳細で時間的制約のあるコンテンツ、および最も人気のあるカスタム投稿を特集する最良の方法の1つです。
WordPressには目立つ投稿機能がありますが、カスタム投稿タイプでは利用できません。
カスタム投稿タイプアーカイブページに固定表示機能をどのように追加するか見てみましょう。
カスタム投稿タイプに固定投稿を追加する
まず、Sticky Posts – Switch プラグインをインストールして有効化する必要があります。詳細については、WordPressプラグインのインストール方法のステップバイステップガイドをご覧ください。
注意: このプラグインはしばらく更新されていませんが、テストでは問題なく動作しました。 WordPressのバージョンでテストされていないプラグインを使用すべきかどうかに関する記事を読むことをお勧めします。
有効化したら、プラグインを設定するために 設定 » 目立つ投稿 – スイッチ ページにアクセスする必要があります。目立たせたいカスタム投稿タイプの横にあるチェックボックスにチェックを入れるだけです。
このチュートリアルでは、「Book Reviews」投稿タイプを確認します。

その後、画面下部にある「変更を保存」ボタンをクリックする必要があります。
カスタム投稿タイプを管理する管理画面にアクセスすると、投稿を目立たせるための新しい列が表示されます。目立たせたい投稿の横にある星印をクリックするだけです。

これで投稿はスティッキーになりました。問題は、WordPressがホームページにのみスティッキー投稿を表示することです。次に、アーカイブページにスティッキー投稿を表示する方法を見ていきましょう。
カスタム投稿タイプアーカイブに固定投稿を表示する
カスタム投稿アーカイブページの上部にスティッキー投稿を表示するには、新しいテンプレートを作成する必要があります。
これを行うには、FTPクライアントまたはWordPressホスティングコントロールパネルのファイルマネージャーオプションを使用する必要があります。FTPを初めて使用する場合は、WordPressにファイルをアップロードするためにFTPを使用する方法に関するガイドを参照してください。
FTPクライアントまたはファイルマネージャーを使用してサイトにアクセスし、/wp-content/themes/YOURTHEME/フォルダに移動する必要があります。
例えば、Twenty Twenty-Oneテーマを使用している場合は、/wp-content/themes/twentytwentyone/に移動する必要があります。
次に、そのフォルダ内にarchive-POSTTYPE.phpのような名前の新しいファイルを作成する必要があります。
例えば、カスタム投稿タイプのスラッグが「bookreviews」の場合、archive-bookreviews.phpという新しいファイルを作成する必要があります。

その後、同じフォルダにある archive.php ファイルを見つける必要があります。archive.php の内容をコピーして、作成した新しいファイルに貼り付けるだけです。
次のステップでは、テーマファイルにコードを追加する必要があります。サイトへのコードの追加にヘルプが必要な場合は、WordPressにカスタムコードを簡単に追加する方法のガイドを参照してください。
準備ができたら、以下のコードをテーマのfunctions.phpファイル、またはWPCodeのようなコードスニペットプラグイン(推奨)に追加する必要があります(WPCode)。
function wpb_cpt_sticky_at_top( $posts ) {
// apply it on the archives only
if ( is_main_query() && is_post_type_archive() ) {
global $wp_query;
$sticky_posts = get_option( 'sticky_posts' );
$num_posts = count( $posts );
$sticky_offset = 0;
// Find the sticky posts
for ($i = 0; $i < $num_posts; $i++) {
// Put sticky posts at the top of the posts array
if ( in_array( $posts[$i]->ID, $sticky_posts ) ) {
$sticky_post = $posts[$i];
// Remove sticky from current position
array_splice( $posts, $i, 1 );
// Move to front, after other stickies
array_splice( $posts, $sticky_offset, 0, array($sticky_post) );
$sticky_offset++;
// Remove post from sticky posts array
$offset = array_search($sticky_post->ID, $sticky_posts);
unset( $sticky_posts[$offset] );
}
}
// Look for more sticky posts if needed
if ( !empty( $sticky_posts) ) {
$stickies = get_posts( array(
'post__in' => $sticky_posts,
'post_type' => $wp_query->query_vars['post_type'],
'post_status' => 'publish',
'nopaging' => true
) );
foreach ( $stickies as $sticky_post ) {
array_splice( $posts, $sticky_offset, 0, array( $sticky_post ) );
$sticky_offset++;
}
}
}
return $posts;
}
add_filter( 'the_posts', 'wpb_cpt_sticky_at_top' );
// Add sticky class in article title to style sticky posts differently
function cpt_sticky_class($classes) {
if ( is_sticky() ) :
$classes[] = 'sticky';
return $classes;
endif;
return $classes;
}
add_filter('post_class', 'cpt_sticky_class');
このコードは、固定された投稿を一番上に移動させます。テーマがpost_class()関数を使用している場合、'sticky'クラスも追加されるため、CSSを使用して固定された投稿をスタイル設定できます。
これは、デモサイトでの「Book Reviews」カスタム投稿タイプアーカイブの外観です。コードを追加する前は、固定投稿がリストの2番目にありました。

これで、テーマのstyle.cssスタイルシートで.stickyクラスを使用して、スティッキー投稿をスタイル設定できます。例を次に示します。
.sticky {
background-color:#ededed;
background-image:url('http://example.com/wp-content/uploads/featured.png');
background-repeat:no-repeat;
background-position:right top;
}
こちらはデモサイトの更新されたスクリーンショットです。

目立つ投稿に関するエキスパートガイド
このチュートリアルが、WordPressカスタム投稿タイプアーカイブにスティッキー投稿を追加する方法を学ぶのに役立ったことを願っています。WordPressのスティッキー投稿に関連する他のガイドも参照することをお勧めします。
- WordPressで固定記事を作成する方法(簡単)
- WordPressでカテゴリごとに固定投稿を追加する方法
- WordPressで固定投稿を使ってできるクールなこと
- WordPressのループから固定投稿を除外する方法
- WordPressで投稿の順序を簡単に変更する方法(ステップバイステップ)
- WordPressでスティッキーなフローティングナビゲーションメニューを作成する方法
- WordPressで固定フローティングサイドバーウィジェットを作成する方法
- WordPressで「固定」フローティングフッターバーを作成する方法
この記事が気に入ったら、WordPressのビデオチュートリアルについては、YouTubeチャンネルを購読してください。 TwitterやFacebookでもフォローできます。

クレア
あなたの例に従って、カスタム投稿タイプをアーカイブで「目立たせる」ことが15分でできました。とても参考になりました、ありがとうございます!
WPBeginnerサポート
Glad to hear our guide was helpful!
管理者
rom
こんにちは、
今、頭を抱えています…。
このプラグインを使っています。問題なく動作し、管理画面でも確認できます。データベースでも、wp_options の sticky_posts が更新されているのがわかります。しかし、「post__not_in」=> get_option(‘sticky_posts’) を使おうとしても、何もフィルタリングされません。
そこで、var_dump(get_option(‘sticky_posts’)) を試してみたのですが、表示されるのは「通常の投稿」の ID だけで、wp_options/sticky_posts にある ID のリスト全体ではありません。
Which mean if I try to use is_stiky in my loop, it only work in ‘normal’ post, not in CPT, which is logic, since get_option(‘sticky_posts’) is not working properly…. Any idea how I can fix that ? it’s driving me crazy
Markus Froehlich
このSticky Post Switchプラグインをご利用いただけます。
カスタム投稿タイプ用の機能も有効になります。
Pat Ducat
これはうまく機能しますが、ページネーションされたアーカイブのすべてのページで固定表示されてしまいます。標準投稿の組み込み固定表示機能もこのように動作しますか?
アーロン
カスタムタクソノミーアーカイブページで動作するようにするには、どのように設定すればよいですか?
関数の4行目の `is_post_type_archive()` の代わりに `is_tax` や `is_category` を追加してみましたが、ページが壊れてしまいます。
明らかに何かを見落としていますが、見つけられません。
何かアイデアはありますか?
Daniel Dropik
ありがとうございます。このチュートリアルを、アーカイブページではなく、専門のページテンプレートに固定投稿を表示するように適応させることは可能ですか?もし可能であれば、どのようにすればこれを達成できますか?
WPBeginnerサポート
ダニエルさん、はい、別のページテンプレートで実現できます。カスタムテンプレートを作成し、上記の手順に従ってください。
管理者
ショーン
アーカイブの代わりに、Custom Taxonomy.phpでこれをどのように行いますか?
WPBeginnerサポート
カスタムタクソノミーが固定投稿をサポートする投稿タイプを表示している場合、同様の方法で表示できます。archive-post-type.phpテンプレートの代わりに、taxonomy-custom-taxonomy.phpテンプレートを変更します。
管理者
Mr.Ultra
ありがとうございます。これは役立ちます。
しかし、プラグインを使わずにカスタム投稿タイプに固定機能を追加することは可能でしょうか?
スニペットを共有していただけますか?
Anir
とても参考になりました、共有ありがとうございます。大変助かります。
Daniel
とても良いチュートリアルです。