选择中的AJAX列表类别和子类别 - Wordpress

时间:2012-12-12 18:16:12

标签: wordpress

我想为类别创建动态加载,例如,有“国家”类别,然后是“美国”,“巴西”,“西班牙”在子类别和“纽约”,“里约热内卢”和“巴塞罗那”属于子类别。

喜欢这个 美国[美国(纽约),巴西(里约)];欧洲[西班牙(巴塞罗那)]

所以我有3个选择:第一个用户必须选择“America”或“Europe”,然后如果我选择“America”,第二个加载“Brazil”和“USA”供我选择,依此类推

我正在尝试的是使用wp_dropdown_categories函数,并根据当前选择wp_dropdown_categories属性动态填充下一个child_of选项。

我尝试使用上面的javascript来为第一个选择选项并且它有效,但是我看不到动态填充其他选择的方法,比如制作wp_dropdown_categories child_of,就像这个wp_dropdown_categories('child_of=the_category_i_have_chosen');

<script type="text/javascript">
    var dropdown = document.getElementById("cat");
    function onCatChange() {
        var value = dropdown.options[dropdown.selectedIndex].value
        }
    }
    dropdown.onchange = onCatChange;
</script>

1 个答案:

答案 0 :(得分:2)

我用它来进行城市/州选择。 &#34; sehir&#34;是自定义分类名称。

的header.php

<script type="text/javascript">
$(function(){
$('#main_scat').change(function(){
    var $mainsCat=$('#main_scat').val();

    // call ajax
    $("#sub_scat").empty();
    $.ajax({
        url:"<?php bloginfo('url'); ?>/wp-admin/admin-ajax.php",       
        type:'POST',
        data:'action=my_special_ajax_calls&main_catids=' + $mainsCat,

        success:function(results)
        {
            //  alert(results);
            $("#sub_scat").removeAttr("disabled");      
            $("#sub_scat").append(results);
        }
    });
});
});
</script>

的functions.php

function implement_ajax_sehir() {
if(isset($_POST['main_catids'])) {
    if($_POST['main_catids'] != 0) {
        $categories=  get_categories('child_of='.$_POST['main_catids'].'&hide_empty=1&taxonomy=sehir'); 
        foreach ($categories as $cat) {
            $option .= '<option value="'.$cat->term_id.'">';
            $option .= $cat->cat_name;
            $option .= '</option>';
        }
        echo '<option value="0" selected="selected">İlçe Seçiniz</option>'.$option;
        die();
    } else {
        echo '<option value="0" selected="selected">İlçe Seçiniz</option>';
    }
}
}
add_action('wp_ajax_my_special_ajax_calls', 'implement_ajax_sehir');
add_action('wp_ajax_nopriv_my_special_ajax_calls', 'implement_ajax_sehir');

主要类别选择框代码:

<?php
$args = array(
'taxonomy' => 'sehir', 
'name'=>'main_scat', 
'hide_empty'=>1,
'depth'=>1,
'hierarchical'=> 1, 
'show_count' => 0,
'show_option_all'=>'Şehir Seçiniz'
);
wp_dropdown_categories( $args ); 
?>  

子类别选择框:

<select name="sub_scat" id="sub_scat" disabled="disabled"><option value="0" selected="selected">İlçe Seçiniz</option></select>

你可以通过这种方式改进。