お問い合わせはコチラから

既存のカスタム投稿タイプに投稿タグやカテゴリを追加する方法

サイト運営

この記事では、投稿のタグやカテゴリをカスタム投稿タイプに追加する方法についてまとめておきます。

実際にカスタム投稿タイプに投稿タグを追加しようとして、自分がやってドハマりしたので、備忘録として残します。

カスタム投稿タイプに投稿タグやカテゴリを追加する

カスタム投稿タイプに投稿タグやカテゴリを追加する場合、追加先のカスタム投稿タイプは、

  • 既存のカスタム投稿タイプを使用しないといけない場合
  • 新規にカスタム投稿タイプを作れる場合

の2通りがあると思います。

新規にカスタム投稿タイプを追加する場合

カスタム投稿タイプを新規に作る場合は、素直にカスタム投稿タイプを作れるプラグインCPT UIを使うのをおススメします。

Custom Post Type UI
タクソノミーや投稿タイプなどのカスタムコンテンツタイプを作成するための管理 UI

おススメする理由は、設定メニューに投稿タグやカテゴリを使えるようにする設定項目があるからです。

このプラグインは、カスタム投稿タイプやカスタムタクソノミーを作る必要性に迫られないと使用する機会はないですが、素晴らしいプラグインだと思います。

既存のカスタム投稿タイプに投稿タグやカテゴリを追加する場合

カスタム投稿タイプに投稿タグやカテゴリを追加する際に問題が起きるのは、既存のカスタム投稿タイプに追加する場合です。

特に有料テーマなどではニュースやお知らせなどと言う名前のカスタム投稿タイプが用意されていることも多いと思います。

私の場合は、それら既存のカスタム投稿タイプとCPT UIで自分で作成したカスタム投稿タイプに投稿タグやカテゴリを追加する時に問題が起きました。

カスタム投稿タイプに投稿タグ、カテゴリを追加する方法とかで、少し検索するとそれらしいサイトが出てきます。しかし、そのまま真似すると動きが少し変になりました。

惜しいんだけど動かなかった例

この記事を見た時に、これはそのものずばりじゃないか!と思ったのですが、完全には動きません。

カスタム投稿タイプのタグ、カテゴリーについて
お世話になります。wordpressのカスタム投稿タイプについての質問なのですが、これは追加した場合、デフォルトのタグやカテゴリーを使うことができないのでしょうか?詳細にいうと、カスタ

まず、投稿タグやカテゴリを使用する投稿タイプをすべて指定する必要があります。

指定しない投稿タイプがあると、その投稿タイプから投稿タグやカテゴリが削除されてしまいます。

極端な例だと、’post’を指定しないと、投稿からもタグやカテゴリが削除されます。つまり、CPT UIで投稿タグやカテゴリを追加したカスタム投稿タイプについても全て書かないといけません。

また、致命的な問題点としてカスタム投稿タイプにカテゴリやタグは追加されるのですが、パーマリンクがおかしくなります。

/**
* PHP 5.4 以上じゃないとエラーがでるので注意してください。
*/
add_action( 'init', function () {
register_taxonomy( 'post_tag', [ 'post', 'teratail' ],
[
'hierarchical' => false,
'query_var' => 'tag',
]
);
register_taxonomy( 'category', [ 'post', 'teratail' ],
[
'hierarchical' => true,
'query_var' => 'category_name',
]
);
} );

add_action( 'pre_get_posts', function ( $query ) {
if ( is_admin() && ! $query->is_main_query() ) {
return;
}
if ( $query->is_category() || $query->is_tag() ) {
$query->set( 'post_type', [ 'post', 'teratail' ] );
}
} );

奇跡のように動く事例

半ばあきらめかけていた時に、見つけた凄い記事がコレです。

https://unguis.cre8or.jp/web/7614

今回ひっかかったのは、タグのリンクが正常に動作しなくなること。
WordPressのデフォルトのタグは タクソノミーが「post_tag」、スラッグが「tag」に設定されています。
上述の記述をすると、スラッグが「post_tag」にセットされ、タグの一覧のリンクURLも /tag/ から /post_tag/ に書き換わります。
すると、WordPressは通常のタグを /tag/として処理しているのかタグのページがおかしなことになってしまう。パーマリンク設定を変えても変化なし。

そのものズバリ!

更に実際のソースがとても短い!

register_taxonomy(
'post_tag',
array('post','スラッグ名'),
get_taxonomy('post_tag')
);

この記事の凄いところは、

  • 追加したい投稿タイプだけ指定すればよい(ただし、postは必要)
  • タグのパーマリンクがおかしくならない

ところです。

まとめ

この方法であれば、有料テーマのカスタム投稿タイプと、CPT UIで作成したカスタム投稿タイプをシームレスにつなげることができます。これがあるかないかでユーザービリティはだいぶ違うのではないかと思いました。

この記事を書いた人
ブーン

はるばる日本よりオランダ王国へやってまいりました。
自分の経験が少しでも参考になれば嬉しいです。
お問い合わせは、『こちら』からお願い致します。

\ブーンをフォロー/
スポンサーリンク
サイト運営
\シェアお願いします!/
\ブーンをフォロー/
こんな記事も読まれています

失敗しないレンタルサーバーランキング

mixhost

不正アクセスに強くて使いやすいおススメサーバー
\本サイトで利用中/
メリット①:自動ウィルス駆除対応
メリット②:サイトの表示速度が速い!
メリット③:転送量の上限が多い!
メリット④:自由にプラン変更ができ、アクセス増にも対応できる!
メリット⑤:バックアップデータが無料で復元できる!
メリット⑥:Wordpressが簡単にインストールできる!
メリット⑦:どのプランでも初期費用が無料!
メリット⑧:10日間の無料お試し期間と30日の返金保証!

Conoha Wing

国内Wordpress最速の最強サーバー
メリット①:圧倒的な表示速度
メリット②:レンタルサーバーと独自ドメインがセットでお得◎
メリット③:プラン変更はすべてのプランで自由自在
メリット④:一か月の利用転送量の制限が緩い(9TB~)
メリット⑤:WordPresサイトの移行が簡単

エックスサーバー

国内シェアNo1の安定性と実績が魅力。ALL SSDで死角なしの万能サーバー。
メリット①:サイトの表示速度が安定して速い!
メリット②:アクセス負荷に強くて安定性が高い!
メリット③:24時間365日の充実サポートで安心!電話サポートもあり!
メリット④:転送量が多い!
メリット⑤:自動バックアップ機能付き!
メリット⑥:WordPressが簡単にインストールできる!
メリット⑦:10日の無料お試し期間がある!

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