[WordPress] 投稿のカテゴリー選択をラジオボタンに変更し「よく使うもの」カテゴリーにチェックを入れておく方法
新規投稿時のカテゴリー選択を、チェックボックスからラジオボタンへ jQuery で変更するカスタマイズに、「よく使うもの」カテゴリーに選択されているものの、一番最初に表示されるカテゴリーにチェックを入れておくという機能をつける方法です。
デフォルトのカテゴリー選択は以下のようにチェックボックスになっていて、複数選択が可能です。

functions.php へコードを追加する
以下のコードを functions.php へ追加します。
function my_print_footer_scripts() {
echo "<script type='text/javascript'>
jQuery(document).ready(function($){
var checkLists = $('#categorychecklist').find('li');
var cnt = 0;
checkLists.each(function(){
var check = $(this).find('input');
var input = $('<input>');
input.attr({
type: 'radio',
id: check.attr('id'),
name: check.attr('name'),
value: check.val()
});
if($(this).hasClass('popular-category') && cnt === 0){
input.prop('checked', true);
cnt++
}
input.insertBefore(check);
check.remove();
});
});
</script>";
}
add_action('admin_print_footer_scripts', 'my_print_footer_scripts', 21);
これで、ラジオボタンへ変更されカテゴリーを1つしか選択できなくなりました。「よく使うカテゴリー」になっているカテゴリーにもチェックが入っています。

このコードの説明
ラジオボタンを新たに作成し id・class などの属性を元のチェックボックスから取得し、新しいラジオボタンへその属性を設定します。
「よく使うもの」に設定されているカテゴリーにはリスト要素に「popular-category」という class が付与されているため、「popular-category」が付けられている要素が出現したら、checked 属性を true に設定しチェックします。ただ、「popular-category」は複数のカテゴリーに付けられるため、一番最初に表示される「popular-category」にのみチェックするようにします。
そして最後に元のチェックボックスは削除します。
以上のことを行っている jQuery コードを、admin_print_footer_scripts フックで管理画面の body 閉じタグ直前に書き出して jQuery を実行しています。

1 Comments & Tracbacks