WordPressでカスタム投稿タイプを作りました。
次みたいなプラグインを使うのが簡単ですよね。
↓ Custom Post Type UIプラグイン
https://wordpress.org/plugins/custom-post-type-ui
カスタム投稿を作ったまでは良いですが、
どうしてか以下の一覧ページに表示されません。
- 日別・月別アーカイブ
- カテゴリー一覧ページ
- タグ一覧ページ
- トップページの記事一覧
この対処法について私が解説します。
目次
CPT UIプラグインでカスタム投稿を作った
私は次のようなカスタム投稿を作りました。
▼ 実際のCPT UIプラグインの設定画面
※ 英語表示なのは気にしないでください
「Online Tool」というカスタム投稿を作りました。
↓ そしてタクソノミーにもチェック済です。
これで一覧に表示されると思ったんですが…
↓ こういう厄介な現象が発生した
- カスタム投稿がカテゴリー一覧に表示されない
- カスタム投稿がタグ一覧に表示されない
- カスタム投稿が月別アーカイブに表示されない
- あらゆる一覧にカスタム投稿が表示されない
カスタム投稿は個別投稿(post)とは切り離された存在です。
だからカテゴリー・タグ・月別一覧などでは認識されないという訳です。
だからWordPress挙動に手を加える必要があります。
カスタム投稿を一覧に表示させる修正方法
以下のような手順でうまくいきます。
ただしWordPressテーマを直接修正します。
※ だから自己責任で行ってください
※ WPバックアップも取っておいてください
1.カスタム投稿でアーカイブを有効にする
初めにCPT UIプラグインを開きます。
設定画面を開いたら「Add/Edit Post Types」=>(編集したいカスタム投稿を選択)=>「Settings」と進んでください。
そして「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経験の長さだったり、
トラブルを自力解決した経験だったり、
それを武器にWPトラブル解決相談をやってます。
お困りなら気軽にご相談ください。
フク郎
最新記事 by フク郎 (全て見る)
- トレンドブログが資産に?放置でアクセス急増の事例 - 3月 14, 2024