WordPressではカテゴリーがデフォルトだとチェックボックスになっています。
運用の都合で複数にチェックをつけさせたくないな…という場合があるので、そんな時はチェックボックスをラジオボタンにしましょう。
functions.phpに記述をしていこう
※必ずfunctions.phpのバックアップを取りつつ作業をしてください。
通常の『投稿』の場合
通常投稿のカテゴリーの場合は、以下のようにfunctionsに記述を行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
function change_post_radio() { ?> <script> jQuery(function($) { // チェックボタンからラジオボタンに変更 $('#categorychecklist input[type=checkbox]').each(function() { $(this).replaceWith($(this).clone().attr('type', 'radio')); }); // 『新規カテゴリーを追加』を非表示にする $('#category-adder').hide(); // 『よく使うもの』を非表示にする $('#category-tabs li:nth-of-type(2)').hide(); }); </script> <?php } add_action( 'admin_print_footer_scripts', 'change_post_radio' ); |
まずはチェックボックス部分、『#categorychecklist input[type=checkbox]』を画面を開いたときにラジオボタンに置き換えます。
そのあとは『新規カテゴリーを追加』を非表示にします。
これは追加した新規カテゴリーのチェックボックスはリアルタイムでラジオボタンに置き換えられないため表示がおかしくなるのを防ぐためです。
カテゴリーの一覧画面から追加はこれまで通り行うことができるので、そちらから追加をしましょう。
そして『よく使うもの』も非表示にします。
こちらも表示指定次第ではチェックボックスをラジオボタンに置き換えることはできますが、チェックボックスの時と異なり『一覧』『よく使うもの』間で選択したものの連携をできないため非表示にしておきます。
カスタムタクソノミーの場合
カスタムタクソノミー場合は基本の型は同じですが指定するIDが異なります。といっても 一部に変更があるだけなので簡単に対応できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
function change_post_radio() { ?> <script type="text/javascript"> jQuery( function( $ ) { // チェックボタンからラジオボタンに変更 $( '#〇〇〇checklist input[type=checkbox]' ).each( function() { $( this ).replaceWith( $( this ).clone().attr( 'type', 'radio' ) ); } ); // 『新規カテゴリーを追加』を非表示にする $('#〇〇〇-adder').hide(); // 『よく使うもの』を非表示にする $('#〇〇〇-tabs li:nth-of-type(2)').hide(); } ); </script> <?php } add_action( 'admin_print_footer_scripts', 'change_post_radio' ); |
〇〇〇の部分に対応するタクソノミー名を入れます。categoryの部分が置き換わるだけですね。
これでカスタムタクソノミーにも対応ができます。
少し制約もありますが、単純にラジオボタンにしたい場合は便利です。
ぜひ試してみてください。