簡體   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