物件検索サイトで、親カテゴリーで第一検索、子カテゴリーで第二検索、孫かてご(ry というサイトを作ることになりました。

各カテゴリーで親子カテゴリー達を調べることはできるけど面倒くさい・・・
というわけで、親カテゴリーを入力しないと子カテゴリーを入力できなくしました。

設定

まず以下のjsファイルを作成して、テーマフォルダに設置してください。
※2014/10/27 term_checked.jsを配列対応に修正

[term_checked.js]

jQuery(function(){

?? ?var tarms= ['category1', 'category2', 'category3']// ここにタクソノミー名を設定;

?? ?tarms.forEach( term_checked );

?? ?function term_checked( tarm, index, ar)
?? ?{
?? ??? ?jQuery('#taxonomy-'+ tarm +' .children').hide();

?? ??? ?jQuery('#taxonomy-'+ tarm +' .selectit input:checkbox:checked').parent().next().show();

?? ??? ?jQuery('#taxonomy-'+ tarm +' input:checkbox').change(function(){
?? ??? ??? ?if( jQuery(this).prop('checked') === true ) // チェックが入っていたら
?? ??? ??? ?{
?? ??? ??? ??? ?jQuery(this).parent().next().show('slow');
?? ??? ??? ?}
?? ??? ??? ?else // チェックが入っていなかったら
?? ??? ??? ?{
?? ??? ??? ??? ?jQuery(this).parent().parent().find('.children').hide('slow');
?? ??? ??? ??? ?jQuery(this).parent().next().find('input:checkbox:checked').prop('checked', false);
?? ??? ??? ?}
?? ??? ?});
?? ?}
});

次に、テーマフォルダ内のfunctions.phpに以下のものを設置してください。

[functions.php]

// カスタムフィールドに画像を表示
function add_script()
{
 $direc = get_bloginfo('template_directory');
 // テーマフォルダ内のjsを呼び出す
? wp_enqueue_script('admin_print_styles', $direc . '/term_checked.js');
}
add_action('admin_print_scripts', 'add_script');

<h4>応用編</h4>
配列を利用すればループして、複数のタームにも設定可能です。
もし、特定のカスタムポストにだけ利用したいならば、上記のfunctions.phpの記述を

$direc = get_bloginfo('template_directory');
// テーマフォルダ内のjsを呼び出す
wp_enqueue_script('admin_print_styles', $direc . '/term_checked.js');

$arr = array('post'); // 配列で指定したいカスタポストを設定
if( in_array($screen->post_type, $arr) )
{
  global $current_screen;
    $screen = $current_screen;
    $direc = get_bloginfo('template_directory');
  // テーマフォルダ内のjsを呼び出す
    wp_enqueue_script('admin_print_styles', $direc . '/term_checked.js');
}

こんな感じです。
もっと楽なやり方があったら教えてください!!

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください