WordPressのカテゴリーは、通常チェックボックスで選択するようになっているので、複数選択が可能です。しかし、カテゴリーを1つしか選択できないようにしたいというケースもあるかと思います。
チェックボックスを1つだけ選択するようにすればいいのですが、それだと誤操作などヒューマンエラーが発生する可能性があります。
そこで、チェックボックスからカテゴリーを1つしか選択できないように、WordPress側で制御してしまう方法を紹介したいと思います。
スポンサードリンク
カテゴリーの選択をラジオボタンに変更する
カテゴリーの選択をチェックボックスから、ラジオボタンに変更してしまう方法です。
functions.phpに以下を追加することで、カテゴリーがラジオボタンに変わります。
function my_print_footer_scripts() { echo '<script type="text/javascript"> //<![CDATA[ jQuery(document).ready(function($){ // 投稿画面のカテゴリー選択を制限 $(".categorychecklist input[type=checkbox]").each(function(){ $(this).replaceWith($(this).clone().attr("type","radio")); }); // クイック編集のカテゴリー選択を制限 $(".cat-checklist input[type=checkbox]").each(function(){ $(this).replaceWith($(this).clone().attr("type","radio")); }); }); //]]> </script>'; } add_action('admin_print_footer_scripts', 'my_print_footer_scripts', 21);
ラジオボタンに変更すれば、自ずと1つしか選択できなくなりますね。
チェックボックスのまま選択を制限する
もう1つは、チェックボックスのまま、選択を制限する方法です。functions.phpに以下を追加します。
add_action( 'admin_print_footer_scripts', 'limit_category_select' ); function limit_category_select() { ?> <script type="text/javascript"> jQuery(function($) { // 投稿画面のカテゴリー選択を制限 var cat_checklist = $('#categorychecklist input[type=checkbox]'); cat_checklist.click( function() { $(this).parents('#categorychecklist').find('input[type=checkbox]').attr('checked', false); $(this).attr('checked', true); }); // クイック編集のカテゴリー選択を制限 var quickedit_cat_checklist = $('.cat-checklist input[type=checkbox]'); quickedit_cat_checklist.click( function() { $(this).parents('.cat-checklist').find('input[type=checkbox]').attr('checked', false); $(this).attr('checked', true); }); }); </script> <?php }
見た目はチェックボックスのままでも、1つしか選択はできなくなります。
あとがき
見た目的にも1つしか選択できないのがわかるので、ラジオボタンにする方が好ましいかもしれませんね。
なお、#categorychecklistや.categorychecklistなどのIDやクラスの部分を変更すれば、カスタムタクソノミーでも使えます。