★★★ たった "1日" でできるWordPressブログの作り方講座 ★★★ はじめてみる
この記事には「PR」「宣伝」が含まれます

カスタム投稿を月別アーカイブ・カテゴリー一覧に表示させる方法

WordPressでカスタム投稿タイプを作りました。

次みたいなプラグインを使うのが簡単ですよね。

Custom Post Type UIプラグイン

https://wordpress.org/plugins/custom-post-type-ui

カスタム投稿を作ったまでは良いですが、
どうしてか以下の一覧ページに表示されません。

  • 日別・月別アーカイブ
  • カテゴリー一覧ページ
  • タグ一覧ページ
  • トップページの記事一覧

この対処法について私が解説します。

CPT UIプラグインでカスタム投稿を作った

私は次のようなカスタム投稿を作りました。

▼ 実際のCPT UIプラグインの設定画面

CPT UIプラグイン - 設定画面からカスタム投稿を追加した時の様子

※ 英語表示なのは気にしないでください

「Online Tool」というカスタム投稿を作りました。

そしてタクソノミーにもチェック済です。

CPT UIプラグイン - カスタム投稿のタクソノミー(カテゴリー・タグ)にもチェックを入れていたが…

これで一覧に表示されると思ったんですが…

↓ こういう厄介な現象が発生した

  • カスタム投稿がカテゴリー一覧に表示されない
  • カスタム投稿がタグ一覧に表示されない
  • カスタム投稿が月別アーカイブに表示されない
  • あらゆる一覧にカスタム投稿が表示されない

カスタム投稿は個別投稿(post)とは切り離された存在です。
だからカテゴリー・タグ・月別一覧などでは認識されないという訳です。

だからWordPress挙動に手を加える必要があります。

カスタム投稿を一覧に表示させる修正方法

以下のような手順でうまくいきます。

ただしWordPressテーマを直接修正します。

※ だから自己責任で行ってください
※ WPバックアップも取っておいてください

1.カスタム投稿でアーカイブを有効にする

初めにCPT UIプラグインを開きます。

設定画面を開いたら「Add/Edit Post Types」=>(編集したいカスタム投稿を選択)=>「Settings」と進んでください。

そして「Has Archive」をTrueに変更します。

↓ 以下の画像を参照

CPT UIプラグイン - カスタム投稿の設定から「Has Archive」をTrueに変更する

デフォルトだとFalseだと思うんですよね。

だからTrueに変更しておきます。

2.使用テーマのfunctions.phpにコード追加

次に使用中のWordPressテーマを修正します。

ただし以下に当てはまるなら試さないでください。

  • WordPressの仕組みを理解していない
  • PHPコードを読めないし書けもしない
  • トラブルが起きても自分で対処できない

そういう人にはリスクが高すぎる方法です。
リスクを理解したうえで次を試してください。

やることはfunctions,phpへのコード追加です。

add_action( 'pre_get_posts', function ( $query )
{
    if (  !is_admin() // 管理画面では無効化
          && $query->is_main_query() // メインクエリ限定
          && ( 
              $query->is_category() /// カテゴリー
              || 
              $query->is_tag()      /// タグ
          )      
    ) {
        $query->set( 'post_type', ['post', 'online-tool'] );
    }
});

このコードではpre_get_postsアクションフックにより、一覧の取得挙動をカスタムしています。ただし管理画面以外・メインクエリ限定という条件です。

また今回はカテゴリー・タグ一覧に表示させたいので、絞込みとして $query->is_category() || $query->is_tag() という条件も追加しています。

そして重要なのが次のコード

/// このコードだけ抜き出し
$query->set( 'post_type', ['post', 'online-tool'] );

これで投稿一覧に online-tool というカスタム投稿タイプも表示されるように改良しています。ここは各自の投稿タイプに置き換えてください。

もし以上を読んでチンプンカンプンなら…

絶対に興味本位で試さないでください!!

※ もし壊れたら私に相談してください ※

上記コードで月別アーカイブにも対応させる

上記はカテゴリー・タグだけに対応してます。

月別アーカイブへのカスタム投稿タイプの表示…

それには以下のコードを使用してください。

↓ さらに改良したコード例

add_action( 'pre_get_posts', function ( $query )
{
    if (  !is_admin() // 管理画面では無効化
          && $query->is_main_query() // メインクエリ限定
          && ( 
              $query->is_category() /// カテゴリー
              || 
              $query->is_tag()      /// タグ
              ||
              $query->is_month()    /// 月別アーカイブ
          )      
    ) {
        $query->set( 'post_type', ['post', 'online-tool'] );
    }
});

条件分岐タグで色々な一覧アーカイブに対応できます。

↓ 詳しくは以下リファレンスを参照のこと

URL : https://wpdocs.osdn.jp/条件分岐タグ

何度も言いますが、自己責任で行ってください。

もし自分一人で解決できないなら…

最後にアドバイスです。

上記作業はWordPressの仕組みを知っていて、
なおかつPHPコードも書ける人向けの方法です。

自分一人では解決できない人も多いでしょう。

↓ そういう時はサービスを使ってみてください。

特に修正代行依頼したいなら1番目のサービスが一番

そこで 《Webサイト制作・Webデザイン》 から依頼してみてください。

ちなみに・・・私もそこでサービスを開いてます。

WordPressのトラブル解決相談始めました!
WordPressが真っ白になった、デザインが崩れた・・・そんなWordPressのトラブル解決相談ができるサービスをココナラで始めました!もしWPのブログ運営で困った時は是非ご利用ください。お得な割引情報もお知らせ・・・

WordPress経験の長さだったり、
トラブルを自力解決した経験だったり、

それを武器にWPトラブル解決相談をやってます。

お困りなら気軽にご相談ください。

The following two tabs change content below.

フク郎

昔はプログラミングに熱中していたが、ブログとWordPressに興味を持ち始め今はサイト・ブログ作りが生きがい。自分の「好き」をブログに変えたい、情報発信したい人に役立つWordPress術・サイト構築術を発信中。一日一歩楽しんでブログ構築できるように読みやすい&楽しい記事作りを心がけています。メールアドレス : fukuropress@gmail.com