0

Woocommerce 将分配的产品类别和属性作为自定义类添加到 li.product

<li class="post-120 product type-product status-publish has-post-thumbnail 
category1 category2 category3 category4 pa_one pa_two...">

我们为每种产品分配了很多类别,这会降低网站速度。有没有办法删除那些额外的类?

4

3 回答 3

5

在woocommerce插件'3.6.2'文件'wc-template-functions.php'中它说:

// 注意,要更改类,您需要使用更新的 woocommerce_post_class 过滤器。

所以要删除我使用的“第一个”和“最后一个”类:

add_filter( 'woocommerce_post_class', 'remove_post_class', 21, 3 ); //woocommerce use priority 20, so if you want to do something after they finish be more lazy
function remove_post_class( $classes ) {
    if ( 'product' == get_post_type() ) {
        $classes = array_diff( $classes, array( 'last','first' ) );
    }
    return $classes;
}

对于我使用的产品类别:

add_filter( 'product_cat_class', 'remove_category_class', 21, 3 ); //woocommerce use priority 20, so if you want to do something after they finish be more lazy
function remove_category_class( $classes ) {
    if ( 'product' == get_post_type() ) {
        $classes = array_diff( $classes, array( 'last','first' ) );
    }
    return $classes;
}
于 2020-01-25T13:58:15.663 回答
0

如果您了解 php,您可以编辑 woocommerce php 模板文件以删除那些额外的类。如果你打开文件,有一个 php 变量要添加额外的类,它是一个数组。

于 2018-01-31T17:25:56.493 回答
0

我建议对 post_class 函数应用过滤器,而不是编辑模板,因为 woocommerce 会定期更新这些模板,并且掌握它们可能会很痛苦。为此,您可以检查您是否在产品循环中,或者是否存在产品以从产品页面中删除,如下所示:

add_filter( 'post_class', function($classes){
$product = wc_get_product();
return ($product) ? array('product'  'or-any-class-you-want') : $classes; } , 9999 );
于 2018-11-21T13:56:04.330 回答