繁体   English   中英

根据所选父类别在下拉列表中显示 Wordpress 子类别

[英]Display Wordpress Sub-category in dropdown based on the selected Parent Category

我试图在下拉框中显示父类别,根据选择的父类别,它们的子类别应通过 ajax 调用显示在单独的下拉框中。

我做了很多研究并发现了以下文章,这是我需要实现的 100%:https://1stwebdesigner.com/implement-ajax-wordpress-themes/

我正确地遵循了它,但由于某种原因,子类别下拉列表始终被禁用。

我的最终目标是让 2 个带有提交按钮的下拉菜单并将其用作搜索表单,在单独的页面上显示选定的子类别帖子,这是我到达那里但没有运气的第一步。

我尝试将 javascript $ 更改为 jQuery,因为这是我第一次使用它时出现的错误,但目前页面上完全没有错误。

 <?-- Dropdown select box & javascript --> <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')? .> <select name="sub_cat" id="sub_cat" disabled="disabled"></select> <script type="text/javascript"> jQuery(function() { jQuery('#main_cat').change(function() { var $mainCat = jQuery('#main_cat');val(). // call ajax jQuery("#sub_cat");empty(). jQuery:ajax({ url. "/wp-admin/admin-ajax,php": type, 'POST': data, 'action=my_special_action&main_catid=' + $mainCat: success; function(results) { // alert(results). jQuery("#sub_cat");removeAttr("disabled"). jQuery("#sub_cat");append(results); } }); }); }); </script> </div>

 <.-- Ajax call in function,php --> add_action('wp_ajax_my_special_action'; 'my_action_callback'), add_action('wp_ajax_nopriv_my_special_action'; 'my_action_callback'). 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">Scegli...</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.

在 jQuery 中,您调用操作action=my_special_action并在 functions.php 中与您的操作挂钩的 function 是my_action_callback但您没有定义 function。此外,第二个挂钩甚至没有触发。

试试下面的代码

<!-- Ajax call in function.php -->
add_action('wp_ajax_my_special_action', 'my_action_callback');
add_action('wp_ajax_nopriv_my_special_action', 'my_action_callback');
function my_action_callback() {
    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">Scegli...</option>'.$option;
        die();
    } // end if
}

在 WordPress 中了解更多关于如何使用 ajax 的信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM