【WordPress】タグをカテゴリーみたいに管理できるようにする

初期状態のワードプレスの投稿には、カテゴリーとタグの2つのタクソノミーが用意されています。

カテゴリーは階層があり親子関係がある状態。よくあるカテゴリー分けに対応している状態ですね。

タグは自由入力のテキストエリアで、好きな単語を入力できるような状態です。

カテゴリーはそのまま使うにしても、タグが自由入力のままだと似たようなタグを量産する自信があります。

「果物」や「くだもの」といった漢字とひらがなならまだしも、「果物!」「☆果物☆」とかもやるでしょう。

なので、すでに登録済のタグから選択できるようにして、これを防ごうと思ったわけです。

初めからあるタグの操作もregister_taxonomy()で

タグは初期設定で用意されているものなので、なにか専用のタグがあるのかと身構えてましたが。

どうやら、カスタムタクソノミーの作成時に使用するregister_taxonomy()で設定変更ができるようでした。

初期設定であろうがなかろうが、タクソノミーとして管理されているみたいです。

カスタムタクソノミーをfunctions.phpで設定する方法はこちら!

タグのタクソノミー名は’post_tag’

初期設定のカテゴリーには’category’と名前がついていますが、調べてみるとタグは’post_tag’だそうで。

'post_tag’のタクソノミーで設定されている内容を変更すれば、カテゴリーのようなチェックボックスを利用した管理を行うことができるようになります。

//タグのチェックボックス化。functions.php内に。
function post_tag_taxonomy_checkbox() {
  $tag_args = get_taxonomy('post_tag');
  $tag_args->hierarchical = true;
  $tag_args->meta_box_cb = 'post_categories_meta_box';
  register_taxonomy('post_tag', 'post', (array) $tag_args);
}
add_action( 'init', 'post_tag_taxonomy_checkbox', 1 );

まずはget_taxonomy()を利用して、タグのタクソノミー情報を変数$tag_argsに入れます。

それから使うであろう内容を考えて、必要な項目のみ変更しました。

$tag_args->hierarchialをtrueにして階層を持たせ。

$tag_args->meta_box_cbを’post_categories_meta_box’とすると、チェックボックスにすることができます。タグの場合はここが’post_tags_meta_box’となっていて、これが自由入力設定となるようです。

最後にregister_taxonomy()を呼び出し、’post_tag’を再設定し’init’アクションフックを利用すれば完了です。

階層化させたらタグじゃない気もするんですが、ごちゃごちゃしすぎると管理できなくなりそうなので、整理したくなったときにしやすいようにです。

また、ブロックエディタでは正常に機能しない場合もあるそうなので、だったら困らないし階層化させておくかと。

これでタグが自由入力ではなくチェックボックス表示に。新規登録するための入力欄は残るので、タグの登録も快適です。

似たようなタグが存在しないように

ブログの運営が長くなると増えていくのがカテゴリーとタグだったりします。

特にタグは色んなタグが混在し、似たようなタグが増えてしまい。

投稿一覧でタグを利用したときに、必要な投稿が無い・・・という経験がありますw

なので、登録済みのタグを見やすく、選択しやすくしできるだけ散らからないようにしたかったのです。

カテゴリーが2個ある感覚にはありますが、そこは使い分けで問題ないでしょう。

参考:WordPress カスタム投稿タイプとカスタム分類(タクソノミー)‐Web Design Leaves
参考:Gutenbergで管理画面のタクソノミーをチェックボックスにする方法‐明日のための記録