如何在单独的下拉列表中显示父分类和子分类?

时间:2012-03-30 作者:Solomon Henry

要求是,我有一个分类法状态,它是父分类法,它有一个子分类法。它们是城市,需要将状态显示为下拉列表,当我选择特定的州税时,我必须在第二个下拉列表中显示州税的相应子城市。。。。。请帮帮我。。

我找到了上述问题的解决方案,但它只能部分解决。。。。。。。。任何有解决方案的人请帮助我。。。。

在get\\u header()之后的模板页面顶部添加以下代码,如您所见,我在wp\\u下拉列表\\u categories中添加了一个自定义分类“state”。。。。

<?php get_header(); ?>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" ></script>
<script type="text/javascript">
$(function()
{
$(\'#main_cat\').change(function()
{
    var $mainCat=$(\'#main_cat\').val();

    // call ajax
    $("#sub_cat").empty();
    $.ajax
    (
        {
            url:"<?php bloginfo(\'wpurl\'); ?>/wp-admin/admin-ajax.php",     
            type:\'POST\',
            data:\'action=my_special_ajax_call&main_catid=\' + $mainCat,

            success:function(results)
            {
                //  alert(results);
                $("#sub_cat").removeAttr("disabled");       
                $("#sub_cat").append(results);  
            }
        }
    );                                    
});
});               
<style type="text/css">
#content{width:auto; height:400px; margin:50px;}
</style>
<div id="content">
<?php 
 wp_dropdown_categories(\'show_count=0&selected=-1&hierarchical=1&depth=1&hide_empty=0&exclude=1&show_option_none=Main Categories&name=main_cat&taxonomy=state\');
?>
<select name="sub_cat" id="sub_cat" disabled="disabled"></select>
</div>
<?php
get_footer();
?>
在函数中添加以下代码。php文件。。。。。。。。

function implement_ajax() {
if(isset($_POST[\'main_catid\']))
    {
    $categories=  get_categories(\'child_of=\'.$_POST[\'main_catid\'].\'hide_empty=0\'); 
      foreach ($categories as $cat) {
        $option .= \'<option value="\'.$cat->term_id.\'">\';
        $option .= $cat->cat_name;
        $option .= \' (\'.$cat->category_count.\')\';
        $option .= \'</option>\';
      }
      echo \'<option value="-1" selected="selected">Sub Categories</option>\'.$option;
    die();
    } // end if
}
add_action(\'wp_ajax_my_special_ajax_call\', \'implement_ajax\');
add_action(\'wp_ajax_nopriv_my_special_ajax_call\', \'implement_ajax\');//for users that are not logged in.
这就是我的结构。。。。

状态1

CT1-1状态2

CT1-2状态3

当我选择父分类法时,第二个下拉菜单被激活,但它不会填充子项,除非它显示静态输出“select”。。。。。我不是一个专业人士,所以对我不客气,有人能帮我解决这个问题吗

1 个回复
最合适的回答,由SO网友:Solomon Henry 整理而成

大家好,这里的每个人都面临着在下拉列表中显示父分类法和子分类法的困难,我找到了上述问题的解决方案。。。。。。

编辑函数中的代码。php文件,

在代码之前

$categories=  get_categories(\'child_of=\'.$_POST[\'main_catid\'].\'hide_empty=0\');
现在编辑代码,如下所示。。。

$categories=  get_categories(\'child_of=\'.$_POST[\'main_catid\'].\'&hide_empty=0\'.\'&taxonomy=state\');
这个效果很好,一定要试试。。。。。。我所做的只是将分类法连接起来,仅此而已

为大家干杯,快乐编码……:)

结束

相关推荐

Run shortcode before filters

我的用户在注释中发布代码片段。我为此创建了一个快捷码:function post_codigo($atts,$content=\"\"){ return \'<code>\'.$content.\'</code>\'; } add_shortcode(\'codigo\',\'post_codigo\'); 问题是html在打包到代码标记之前会被过滤掉。我想如果我能在过滤器之前运行短代码,那么我可以使用fun