WordPressの編集画面でタグをつける時に、カテゴリのようにタグをチェックボックスで選択したいと思う人は多いと思います。
WordPressのタグをチェックボックス化する方法は検索すると簡単に見つかりますが、Gutenbergに対応していなかったり、そもそもやり方に説明が無く、応用が利きません。
この記事では、Gutenbergに対応したタグのチェックボックス化の方法をご紹介します。この記事を読むことで誰でも簡単に編集画面のタグをチェックボックス化することができます。
注意!Gutenbergだとタグが保存されないようです
最近のWordpressのバージョンでは正常に動作するようになったようです。
このカスタマイズはブロックエディタ(Gutenberg)では不具合があります。
個人的にsimple-tagsというプラグインをサイドバーに移動して使っていたので不具合があることに気が付きませんでした。
Gutenbergはタグをチェックボックス化する機能に対応していない
WordPressの標準的な方法でタグをチェックボックス化する方法として、 register_taxonomy関数のオプションを使う方法があります。
タグをチェックボックス化するregister_taxonomy関数のオプション
register_taxonomyのオプションにmeta_box_cbがあります。このオプションを使うことでタグをチェックボックス化することができます。
コールバック関数を指定します。
バージョン3.8以降で使用可能で、メタボックスの表示に使用されるコールバック関数名を指定できます。
メタボックスとは、記事投稿画面の右サイドバーにある、「カテゴリー」や「タグ」などのボックスを示します。
hierarchicalがtrueのタクソノミーの場合は、カテゴリーでも使用されている「post_categories_meta_box()」(meta-boxes.php内に記述有)が使用されます。hierarchicalがfalseのタクソノミーの場合は、タグでも使用されている、「post_tags_meta_box()」が使用されます。
「meta_box_cb」にfalseを設定すると、メタボックスは何も表示されません。
初期値:null
meta_box_cbの設定
'meta_box_cb' => 'post_categories_meta_box'
このオプションを指定するだけで、クラシックエディタを使う場合はタグをチェックボックス化することができます。
hierarchicalの設定
'hierarchical'=> true,
というオプションを指定すべし、という記事をよく見かけますが、meta_box_cbを指定すれば不要です。
Gutenbergを使う場合は、meta_box_cbオプションは無視されます。Gutenbergを使う場合はhierachicalオプションが必要です。
'hierarchical' => true
ClassicエディタとGutenbergのどちらでもタブをチェックボックス化できるオプション設定
Classicエディタでは、’meta_box_cb’ => ‘post_categories_meta_box’だけ必要
Gutenbergでは、’hierarchical’ => trueだけ必要
つまり、両方設定しておけばどちらもタブをチェックボックス化できます。
- ‘meta_box_cb’ => ‘post_categories_meta_box’
- ‘hierarchical’ => true
register_taxonomyを使って再設定する方法
function.phpに以下のコードを張り付けることで、 classicエディタとGutenbergでタグをチェックボックス化することができます。
function _re_register_post_tag_taxonomy() {
$tag_slug_args = get_taxonomy('post_tag'); // returns an object
$tag_slug_args -> hierarchical = true;
$tag_slug_args -> meta_box_cb = 'post_categories_meta_box';
register_taxonomy( 'post_tag', 'post',(array) $tag_slug_args);
}
add_action( 'init', '_re_register_post_tag_taxonomy', 1 );
まとめ
タグをチェックボックス化する方法は、検索するといろいろ出てきますが、今回ご紹介した方法は記述量が少なく、カスタムタクソノミーにも対応できますので、おすすめです。