javascript - 从下拉菜单上的子类别中获取父级

标签 javascript php jquery html wordpress

我有这段代码,可以在下拉菜单中显示我的所有类别。

您可以在此处看到它正在运行:https://store.vtxfactory.org/products/

对于父类别来说,它就像一个魅力。问题是,它无法识别子类别的父类别,因此不会转到 /product-category/cameras-photos/lens/ ,而是转到 /product-category/lens 。它也有效,但这不是我想要实现的目标。

有没有办法也获取 url 上的父类别?

<?php

function replace_id_for_slug($option){
$categories = get_categories("hide_empty=0");

preg_match('/value="(\d*)"/', $option[0], $matches);

$id = $matches[1];

$slug = "";

foreach($categories as $category){
    if($category->cat_ID == $id){
        $slug = $category->slug;
    }
}

return preg_replace("/value=\"(\d*)\"/", "value=\"$slug\"", $option[0]);
}

$select = wp_dropdown_categories("hierarchical=true&hide_empty=0&echo=0&taxonomy=product_cat&value_field=slug&show_option_none=- Search by category...&show_count=1&selected=1&orderby=name");

$select = preg_replace_callback("#<option[^>]*>[^<]*</option>#", "replace_id_for_slug", $select);

echo $select;

?>

<script type="text/javascript"><!--
var dropdown = document.getElementById("cat");
function onCatChange() {
    if ( dropdown.options[dropdown.selectedIndex].value != -1 ) {
        location.href = "<?php echo get_option('home');?>/product-category/"+dropdown.options[dropdown.selectedIndex].value+"/";
    }
}
dropdown.onchange = onCatChange;
--></script>

谢谢。

最佳答案

你需要修改你的JS来检查所选选项是否有父选项,然后打印父选项。这应该适用于您的网站,请注意,如果您要添加另一个级别(您可能想考虑使用 for 循环),它只会检查上一级。

$(document).ready(function() {
    $("#cat").change(function () {
        var selected = $("#cat option:selected");
        var destination = "<?php echo get_option('home');?>/product-category/"; 
        if(selected.attr("class") == "level-1"){
           destination += selected.prevAll("option.level-0:first").val()+"/";
        }
        destination += selected.val()+"/";
        location.href = destination;
    });
});

关于javascript - 从下拉菜单上的子类别中获取父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48434621/

相关文章:

javascript - 关系在 TypeGraphQL 中无法正常工作(您需要为...提供显式类型)

javascript - 如何将表格 td 内联样式宽度 pt 转换为百分比以适应响应式?

javascript - 如何插入动态帖子数组php?

javascript - Jquery .click 函数不适用于按钮

javascript - jQuery hsCountdown 返回某些数字的错误值

javascript - & 符号获取子级/父级集合

javascript - 构造函数的方法不起作用

php - 数据库自定义排序顺序

PHP:如何从数组中删除特定元素?

javascript - 对象未定义/HTMLElement 分别使用 jQuery 输出