1

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

像这样的美国 [USA(New York), Brazil(Rio)] ; 欧洲 [西班牙(巴塞罗那)]

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

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

我尝试用上面的 javascript 做一些事情来获得为第一个选择的选项并且它有效,但我看不到动态填充另一个选择的方法,比如制作一个wp_dropdown_categorieschild_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>
4

1 回答 1

3

我将其用于城市/州选择。“sehir”是自定义分类名称。

头文件.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>

函数.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>

您可以通过这种方式进行改进。

于 2018-05-29T10:19:46.530 回答