1

我正在构建一个包含多个类别和子类别的 WP 电子商务网站,并且只需要在一个存档页面上删除子类别标题。

所有其他类别和子类别页面仍然需要子类别标题。

非常感谢。

4

1 回答 1

1

更新- 2018 年 11 月

为此目的,最简单的方法是制作一个自定义条件函数,您将在相关的相关模板中使用该函数,content-product_cat.php其中该子类别标题被挂钩。

1)条件函数

这是该代码:

function is_parent_category( $subcategory_term, $parent_category_term_slug ) {
    $parent_term = get_term( $subcategory_term->parent, $subcategory_term->taxonomy );
    return $parent_term->slug == $parent_category_term_slug ? true : false;
}

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


2) 通过您的主题覆盖 **content-product_cat.php WooCommerce 模板。**

如果尚未完成,请在您的活动子主题(或主题)中创建一个woocommerce文件夹。然后从woocommerce插件文件夹中复制一个在活动子主题(或主题)中新创建templates的文件夹中命名的文件。content-product_cat.phpwoocommerce

打开/编辑这个复制的content-product_cat.php模板文件。

替换以下行:

do_action( 'woocommerce_shop_loop_subcategory_title', $category );

这样:

if( ! is_parent_category( $category, 'exterior-paving' ) ) {
    do_action( 'woocommerce_shop_loop_subcategory_title', $category );
}

保存,你完成了。现在如您所愿,仅在“铺路品牌”存档页面上的所有品牌名称都将被删除。

此代码经过测试并且功能齐全。


补充:处理多个父类别段:

要处理多个父类别 slug,请改用以下内容(来自 slugs 数组)

function is_parent_category( $subcategory_term, $parent_category_term_slugs ) {
    $parent_term = get_term( $subcategory_term->parent, $subcategory_term->taxonomy );
    return in_array($parent_term->slug, $parent_category_term_slug ) ? true : false;
}

用法示例:

// Reminder: $category is a WP_Term object
if ( is_parent_category( $category, array( 'clothing', 'posters' ) ) {
    // Do something (matching subcategory)
} else {
    // Do something else (no matching subcategory)
}
于 2016-10-03T12:40:23.887 回答