在 Woocommerce 产品类别小部件中显示子类别档案

2024-03-24

我正在使用 Woocommerce 建立一家商店并使用 WooCommerce 产品类别小部件。我已经设置了许多产品类别和子类别。其中一个类别是“海报”,并有几个子类别,例如“星座”、“旅行”、“自然”......

默认情况下,Woocommerce 仅显示父类别,这很好。如果我单击“海报”类别,我将被重定向到“海报”类别存档页面,并且小部件会显示所有“海报”子类别,这非常完美。

现在,如果我单击这些“海报”子类别之一,我将被重定向到相应的存档页面,但我的导航不再显示所有其他“海报”子类别。

问题:
在浏览子类别时如何获取所有父类别和“同级”子类别?

随机示例折叠时的标准导航:

手机壳
Mugs
枕头
海报
衬衫
贴纸

导航示例当点击“海报”时:

手机壳
Mugs
枕头
海报
- 星座
- 旅行
- 自然
- 抽象的
--排版
衬衫
贴纸

单击子类别时,例如“自然”,导航返回到第一个示例的样子,全部折叠起来。但我希望它像第二个例子一样保持扩展。

屏幕截图中的下面是我对 Woocommerce 产品类别小部件的设置:

任何帮助将不胜感激。


您的设置是正确的。下面的代码仅针对档案类别页面,现在它将显示 Woocommerce 产品类别小部件中当前子类别的所有子子类别:

add_filter('woocommerce_product_categories_widget_args', 'widget_product_categories_list_args', 10, 1);
function widget_product_categories_list_args( $list_args ) {
    global $wp_query;

    // Only for category archives pages
    if ( is_tax( $list_args['taxonomy'] ) ):
        // Get current category
        $current_cat = $wp_query->queried_object;

        // Get all Included category terms IDs in the widget
        $included_ids = explode( ',', $list_args['include'] );

        // Get All Childrens Ids from parent term or from current term
        if($current_cat->parent != 0 )
            $childrens = get_term_children( $current_cat->parent, $list_args['taxonomy'] );
        else
            $childrens = get_term_children( $current_cat->term_id, $list_args['taxonomy'] );

        // Loop through Children term Ids and add them to existing included ones
        foreach( $childrens as $child )
            $included_ids[] = $child;

        // Replace included product category term IDs in the $args array
        $list_args['include'] = $included_ids;
    endif;

    return $list_args;
}

代码位于活动子主题(或活动主题)的 function.php 文件中。

经过测试并有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Woocommerce 产品类别小部件中显示子类别档案 的相关文章

随机推荐

  • 在 JavaScript 中取消转义 HTML 实体?

    我有一些与 XML RPC 后端通信的 JavaScript 代码 XML RPC 返回以下形式的字符串 img src myimage jpg 但是 当我使用 JavaScript 将字符串插入 HTML 时 它们会按字面意思呈现 我没有
  • PHP 中的电子邮件跟踪技术

    我正在用 php 做一个新闻通讯管理 我需要跟踪打开我们新闻通讯的访问者 我已在新闻通讯中插入了跟踪图像 但这似乎不起作用 使用 Shift 邮件程序 可以选择将内嵌图像嵌入到时事通讯中 是否可以使用此内联图像进行跟踪 还有其他技术可以跟踪
  • @WebServlet 注释无法识别;初始化不运行

    我正在尝试学习注释 我目前有一个 Web 应用程序 当该应用程序在 Tomcat 中启动时 该应用程序会运行 init 以下代码有效 web xml
  • 为什么“分段错误”在 C 中仍然存在

    操作系统中的分段是一个与时间本身一样古老的概念 至少根据我的教授的说法 大多数现代操作系统已经放弃了分段的概念 现在主要依靠分页来实现内存保护 从而防止每个进程访问除自己的内存之外的任何其他内存 那么我们如何在 C 中仍然遇到 分段错误 在
  • Xcode Storyboard 在 UI 元素周围显示蓝色框架。我该如何关闭此功能?

    老实说 我不确定我在这里做了什么 我以前从未见过这个 Xcode 现在在我的 Storyboard 中的每个 UI 元素周围显示蓝色框架 这适用于其中的所有视图控制器 我该如何撤消或修复此问题 请看下面的截图 它们是 UI 元素的边界矩形
  • 当我使用 Finchley.M5 时,spring-cloud-starter-eureka 无法解析

    尝试使用 Spring Cloud Gateway 创建我自己的 api 网关 下面是我的 build gradle 文件 buildscript ext springBootVersion 1 5 9 RELEASE apply plug
  • MSVC 内联 ASM 到 GCC

    我正在尝试处理 MSVC 和 GCC 编译器 同时更新此代码库以在 GCC 上工作 但我不确定 GCC 内联 ASM 到底是如何工作的 现在我不太擅长将 ASM 翻译成 C 否则我只会使用 C 而不是 ASM SLONG Div16 sig
  • 用于填充电子表格列的一维数组

    我正在使用内置的组服务来提取用户名列表 function getUsersInGroup group var usersInGroup GroupsApp getGroupByEmail group getUsers return user
  • throw 和 $pscmdlet.ThrowTerminateerror() 之间的区别?

    在 PowerShell 中 有什么区别throw ErrorMsg and PScmdlet ThrowTerminatingError ErrorMsg 它们是相同还是不同 如果它们不同 哪一个更可取 Throw创建一个script 终
  • R install_github:错误:无法安装“未知包”[重复]

    这个问题在这里已经有答案了 我是 GitHub 的新手 我很困惑 我无法得到install github上班 我按照此处的有用说明设置了我的帐户 https kbroman org github tutorial pages init ht
  • 应如何管理函数范围内声明的计时器的清理?

    在下面的代码中 一个Timer在函数内部声明 它也订阅了Elapsed event void StartTimer System Timers Timer timer new System Timers Timer 1000 timer E
  • 将 CGrect 值更改为用户坐标系

    我有一个CGRect 我可以将其坐标转移到用户坐标系中 即左下角到顶部而不是左上角到底部 是否有任何预定义的方法或者我需要手动计算 提前致谢 要将矩形从原点位于左下角的坐标系 我们将其称为传统坐标系来命名 转换为原点位于左上角的系统 iPh
  • 如何使用 docker 将 django cookiecutter 项目上传并部署到heroku?

    我正在使用 django cookiecutter 带有 docker 和 heroku 设置 开发一个应用程序 并且已经部署它 这是我的第一个项目 所以之前没有 django docker 或 heroku 的经验 我已经在 cookie
  • 如何在 WHERE 子句中编写带有 SELECT 语句的 SQL DELETE 语句?

    数据库 Sybase Advantage 11 在我寻求标准化数据时 我试图删除从中得到的结果SELECT陈述 SELECT tableA entitynum FROM tableA q INNER JOIN tableB u on u q
  • 异步等待获取未定义。如何处理?

    我目前正在学习async await fetch我创建了以下示例来帮助我学习 下面的工作示例 从公共 API 获取三个随机 json 记录 提取出url从每次返回json 创建三个img元素 追加三img文档正文的元素 请注意promise
  • 将 RGBA 图像转换为灰度 Golang

    我目前正在开发一个将 RGBA 图像转换为灰度的程序 我之前问了一个问题 并得到了以下答案 更改单个像素的颜色 Golang 图像 https stackoverflow com questions 36573413 change colo
  • Array.length = 0 和 Array =[] 之间的区别?

    有人可以解释一下它们两者之间的概念差异吗 在某处读到第二个通过销毁对现有数组的所有引用来创建一个新数组 而 length 0 只是清空数组 但这对我来说不起作用 Declaration var arr new Array 下面是一次又一次执
  • 如何快速清除简单类型的记录?

    我有一个这样定义的结构 const MaxSignalRecords 255 type TSignalRecord record signal1 integer signal2 integer signal3 integer signal4
  • Inno Setup - 允许用户选择“只有我”或“任何使用这台计算机的人”

    我遇到的一些安装程序让我选择 只为我 或 为 使用这台计算机的任何人 安装应用程序 如何让我的 Inno Setup 脚本向用户提供此选择 以便我可以根据他们的回答方式更改安装程序的操作 有很多方法可以解释 只有我 与 所有用户 问题的答案
  • 在 Woocommerce 产品类别小部件中显示子类别档案

    我正在使用 Woocommerce 建立一家商店并使用 WooCommerce 产品类别小部件 我已经设置了许多产品类别和子类别 其中一个类别是 海报 并有几个子类别 例如 星座 旅行 自然 默认情况下 Woocommerce 仅显示父类别