【问题标题】:Add the term slug as a class to the product category div tag in Woocommerce将术语 slug 作为类添加到 Woocommerce 中的产品类别 div 标签
【发布时间】:2018-10-29 21:18:11
【问题描述】:

在 Woocommerce 中,我正在尝试过滤位于 wc-template-functions.php 核心代码中的 wc_get_product_cat_class() 函数的输出:

function wc_get_product_cat_class( $class = '', $category = null ) {
    $classes   = is_array( $class ) ? $class : array_map( 'trim', explode( ' ', $class ) );
    $classes[] = 'product-category';
    $classes[] = 'product';
    $classes[] = wc_get_loop_class();
    $classes   = apply_filters( 'product_cat_class', $classes, $class, $category );

    return array_unique( array_filter( $classes ) );
}

我需要它来将 cat slug 作为一个类添加到类别页面上的每个 li 标记中。

当我直接编辑文件并将其添加到函数时它工作正常:

$classes[] = $category->slug;

然后我有<li class="product-category whatever-cat-slug product">

但显然我正在尝试找到一种更好的方法将其添加到我的主题函数文件中。

我试过了,没有成功:

add_filter( 'product_cat_class' , 'add_class_to_category_list_element');
function add_class_to_category_list_element($classes) {
$classes[] = $category->slug;
return $classes;
} 

因为$category在这里没有意义。

欢迎任何帮助。

【问题讨论】:

  • 你可以从你的过滤函数中访问$category参数,它被传递(见here)增加你接受的参数并在你的函数中获得$category参数

标签: php wordpress woocommerce hook-woocommerce custom-taxonomy


【解决方案1】:

product_cat_class 过滤器挂钩管理 3 个参数 $classes$class$category,因此您的代码有点不完整。此外,在尝试获取 slug 之前,您应该确保 $category 是一个已定义的对象。

试试这个:

add_filter( 'product_cat_class' , 'add_class_to_category_list_element', 10, 3 );
function add_class_to_category_list_element( $classes, $class, $category ) {
    if( is_object( $category ) )
        $classes[] = $category->slug;

    return $classes;
}

代码进入您的活动子主题(或活动主题)的 function.php 文件中。经过测试并且可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 2018-02-24
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多