将第二和第三子类别添加到我的类别下拉列表中

时间:2019-02-07 14:02:29

标签: javascript php wordpress woocommerce

我正在尝试在下拉列表中显示我的类别和子类别。 我尝试进行车辆选择,客户必须先选择他的车辆,然后再选择类型,然后再选择发动机等。

直到主类别成为第一个子类别,我才能够做到。 但是,不会显示第二和第三子类别。

我自己没有用Javascript编写该部分,因为很不幸,我仍然是Javascript的初学者。

有人可以帮助我,告诉我我做错了什么吗?

这是我的代码:

<?php
if ( ! class_exists( 'frontendAjaxDropdown' ) ):
    class frontendAjaxDropdown
    {

        function __construct()
        {

            add_shortcode( 'car_conf', array($this, 'init_shortocde') );

            add_action( 'wp_ajax_get_subcat', array($this, 'getSubCat') );
            add_action( 'wp_ajax_get_subsubcat', array($this, 'getSubSubCat') );


            add_action('wp_ajax_nopriv_get_subcat', array($this, 'getSubCat') );
            add_action('wp_ajax_nopriv_get_subsubcat', array($this, 'getSubSubCat') );

        }

        function init_shortocde()
        {

            wp_dropdown_categories(
                'taxonomy=product_cat&name=main_cat&selected=-1&hierarchical=1&depth=1&hide_empty=0&show_option_none=All Categories'
            );
            ?>
            <script type="text/javascript">
                (function($){
                    $("#main_cat").change(function(){
                        $("#sub_cat").empty();
                        $.ajax({
                            type: "post",
                            url: "<?php echo admin_url( 'admin-ajax.php' ); ?>",
                            data: { action: 'get_subcat', cat_id: $("#main_cat option:selected").val() },
                            success: function(data) {
                                $("#sub_cat").append(data);
                            }
                        });
                    });
                })(jQuery);

                (function($){
                    $("#sub_cat").change(function(){
                        $("#subsub_cat").empty();
                        $.ajax({
                            type: "post",
                            url: "<?php echo admin_url( 'admin-ajax.php' ); ?>",
                            data: { action: 'get_subsubcat', cat_id: $("#sub_cat option:selected").val() },
                            success: function(data) {
                                $("#subsub_cat").append(data);
                            }
                        });
                    });
                })(jQuery);
            </script>

            <div id="sub_cat"></div>
            <div id="subsub_cat"></div>

            <?php
        }


        function getSubCat()
        {
            wp_dropdown_categories(
                "taxonomy=product_cat&name=sub_cat&selected=-1&hierarchical=1&depth=1&hide_empty=0&child_of={$_POST['cat_id']}"
            );
            die();
        }

        function getSubSubCat()
        {
            wp_dropdown_categories(
                "taxonomy=product_cat&name=subsub_cat&selected=-1&hierarchical=1&depth=1&hide_empty=0&child_of={$_POST['cat_id']}"
            );
            die();
        }
    }
endif;
new frontendAjaxDropdown();
?>

1 个答案:

答案 0 :(得分:0)

您是否已完成调试的所有步骤?

您是否尝试过检查文档并查看子类别是否全部显示?

我刚刚做了一个google,我相信WP将此功能包装在一个函数中:

https://developer.wordpress.org/reference/functions/wp_list_categories/

这可能就是您想要的

以下两个其他链接可能会有所帮助

https://www.sitepoint.com/mastering-wordpress-categories-api/ https://www.youtube.com/watch?v=n1ZhJ_rIHjQ

这是一个与您提出的问题类似的stackoverflow问题

https://wordpress.stackexchange.com/questions/163372/how-to-get-woocommerce-product-category-link-by-id

在您的特定情况下,您似乎正在获取类别ID,但似乎并没有在获取类别名称

taxonomy=product_cat&name=subsub_cat

我不确定这是否是您要的。也许您想添加

cat_name: $("#main_cat option:selected").val()

到您的帖子?

相关问题