首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从wc_get_product_cat_class Woocommerce函数中删除类

从wc_get_product_cat_class Woocommerce函数中删除类
EN

Stack Overflow用户
提问于 2016-02-17 14:40:09
回答 2查看 2.2K关注 0票数 0

The中的wc_get_product_cat_class函数将'first‘和'last’类添加到我的一些<li>元素中。

我想删除这些类。有人知道如何在不编辑实际的Woocommerce函数的情况下在我的functions.php中覆盖它吗?

我到处都找过了,但没有找到任何解决方案。我在这方面还是个新手,希望这不是一个愚蠢的问题:

下面是wc-template-functions.php中的函数

代码语言:javascript
复制
function wc_get_product_cat_class( $class = '', $category = null ) {
    global $woocommerce_loop;

    $classes   = is_array( $class ) ? $class : array_map( 'trim', explode( ' ', $class ) );
    $classes[] = 'product-category';
    $classes[] = 'product';

    if ( 0 === ( $woocommerce_loop['loop'] - 1 ) % $woocommerce_loop['columns'] || 1 === $woocommerce_loop['columns'] ) {
        $classes[] = 'first';
    }

    if ( 0 === $woocommerce_loop['loop'] % $woocommerce_loop['columns'] ) {
        $classes[] = 'last';
    }

    $classes = apply_filters( 'product_cat_class', $classes, $class, $category );

    return array_unique( array_filter( $classes ) );
}

这是调用该函数的content-product_cat.php模板中的代码

代码语言:javascript
复制
<li <?php wc_product_cat_class( '', $category ); ?>>
    <?php
    /**
     * woocommerce_before_subcategory hook.
     *
     * @hooked woocommerce_template_loop_category_link_open - 10
     */
    do_action( 'woocommerce_before_subcategory', $category );

    /**
     * woocommerce_before_subcategory_title hook.
     *
     * @hooked woocommerce_subcategory_thumbnail - 10
     */
    do_action( 'woocommerce_before_subcategory_title', $category );

    /**
     * woocommerce_shop_loop_subcategory_title hook.
     *
     * @hooked woocommerce_template_loop_category_title - 10
     */
    do_action( 'woocommerce_shop_loop_subcategory_title', $category );

    /**
     * woocommerce_after_subcategory_title hook.
     */
    do_action( 'woocommerce_after_subcategory_title', $category );

    /**
     * woocommerce_after_subcategory hook.
     *
     * @hooked woocommerce_template_loop_category_link_close - 10
     */
    do_action( 'woocommerce_after_subcategory', $category ); ?>
</li>
EN

回答 2

Stack Overflow用户

发布于 2017-12-07 02:51:06

虽然延迟了,但我想这可能会有帮助。您可以定义自己的wc_product_cat_class函数并从content-Productcat.php调用它

例如:如果你想删除"first“和"last”类,你可以使用下面的代码。

代码语言:javascript
复制
function your_own_wc_product_cat_class( $class = '', $category = null ) {
    $product_cat_classes = array_diff( wc_get_product_cat_class( $class, $category ), array( 'first', 'last' ) );
    echo 'class="' . esc_attr( join( ' ', $product_cat_classes ) ) . '"';
}

现在您可以从content-product_cat.php调用它,就像这样的<?php ro_wc_product_cat_class() ?>

票数 0
EN

Stack Overflow用户

发布于 2016-04-30 18:57:56

也许为时已晚,但希望也会有人需要它……

代码语言:javascript
复制
if (  ! function_exists( 'YOUR_product_cat_class' ) ) {

    function YOUR_product_cat_class( $class = '', $category = null ) {

        // this one is Toast grid based, I use it in my own theme
        $classes[] = 'grid__col';
        $wc_span = 12 / apply_filters( 'loop_shop_columns', 4 );
        $spans = array( 6, 4, 3, 2 );
        $span  = in_array( $wc_span, $spans ) ? $wc_span : 4;
        $classes[] = 'grid__col--' . $span . '-of-12';

        return array_unique( array_filter( $classes ) );

    }

}
add_filter( 'product_cat_class' , 'YOUR_product_cat_class' );

另外,请确保正确编辑您的content-product_cat.php模板。例如,我没有使用无序列表,我的循环以DIV开头(content-product_cat.php,第37行):

代码语言:javascript
复制
<div <?php wc_product_cat_class( '', $category ); ?>>
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35449615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档