こんにちは、ぷぷのすけです。
プラグインを使わずWordPressの管理画面で投稿・カスタム投稿のカテゴリー(ターム)を複数選択から単一選択に変更したい!
そう思い、まず頭に浮かんだのがカテゴリーのチェックボックスをラジオボタン変更する方法です。調べた結果「PS Taxonomy Expander」プラグインを使えば簡単にできることが判明!
しかし、私と同様にいろんな事情でプラグインを使いたくない・使えない場合の対応策を備忘録として残しておこうと思います。
チェックボックスを1つしか選択できないようにする
いろいろ調べた結果、わざわざラジオボタンに変更しなくてもチェックボックスを1つしか選択しないようにすればいいじゃないか!と言う結論に達しました。
function.phpに下記のコードを追加してください。
function category_single_select() { ?> <script type="text/javascript"> jQuery(function($) { // 投稿画面のカテゴリー選択を制限 var cl = $('.categorychecklist input[type=checkbox]'); cl.click( function() { $(this).parents('.categorychecklist').find('input[type=checkbox]').attr('checked', false); $(this).attr('checked', true); }); // クイック編集のカテゴリー選択を制限 qcl = $('.cat-checklist input[type=checkbox]'); qcl.click( function() { $(this).parents('.cat-checklist').find('input[type=checkbox]').attr('checked', false); $(this).attr('checked', true); }); $('.categorychecklist>li:first-child, .cat-checklist>li:first-child').before('<p style="padding-top:5px;">1つ選んでください</p>'); }); </script> <?php } add_action('admin_print_footer_scripts', 'category_single_select');
これでチェックボックスが複数選択から単一選択に変更されます。
カスタムメニューは複数選択を維持したい場合
上記のソースコードではカスタムメニューも単一選択になってしまします。
カスタムメニューで複数選択を維持したい場合は下記のソースコードをfunction.phpに書いてください。
function category_single_select() { ?> <script type="text/javascript"> jQuery(function($) { // 投稿画面のカテゴリー選択を制限 var cl = $('#category-all input[type=checkbox]'); cl.click( function() { $(this).parents('#category-all').find('input[type=checkbox]').attr('checked', false); $(this).attr('checked', true); }); // カスタム投稿画面のカテゴリー選択を制限 var cl = $('#タクソノミー名-all input[type=checkbox]'); cl.click( function() { $(this).parents('#タクソノミー名-all').find('input[type=checkbox]').attr('checked', false); $(this).attr('checked', true); }); // クイック編集のカテゴリー選択を制限 qcl = $('fieldset.inline-edit-categories input[type=checkbox]'); qcl.click( function() { $(this).parents('fieldset.inline-edit-categories').find('input[type=checkbox]').attr('checked', false); $(this).attr('checked', true); }); $('.categorychecklist>li:first-child, .cat-checklist>li:first-child').before('<p style="padding-top:5px;">1つ選んでください</p>'); }); </script> <?php } add_action('admin_print_footer_scripts', 'category_single_select');
13、15行目の’#タクソノミー名-all’ですが、「タクソノミー名」の部分をregister_taxonomyの
第1パラメーターで指定したタクソノミー名に変換してください。
Costom Post Type UIプラグインをお使いの方は、「タクソノミー名」の部分を
「タクソノミーの追加と編集」画面の「タクソノミースラッグ」で指定した値に変換してください。
(例)タクソノミー名が[hoge]の場合、’#hoge-all’になります。
今回、記事にした内容はWordPress 5.0から採用された新エディタのGutenberg(グーテンベルグ)には対応しておりません。新エディタの対応策がわかったら追記します。
この対応策は下記のサイトを参考にさせていただきました。
WordPress:カテゴリー選択を1つしかできないように制限する方法 | NxWorld