替换Wordpress(WooCommerce)函数

时间:2016-02-02 21:55:17

标签: php wordpress woocommerce

我使用Unite Theme和Woocommerce,需要替换wc_get_product_cat_class函数。经过整整一夜的尝试,我发现以下内容存储在/wp-content/plugins/woocommerce/includes/wc-template-functions.php

//  Display the classes for the product cat div.
    function wc_product_cat_class( $class = '', $category = null){
     // Separates classes with a single space, collates classes for post DIV
     echo 'class="' . esc_attr( join( ' ', wc_get_product_cat_class( $class, $category ) ) ) . '"';
    }
//  Get the classes for the product cat div.
    function wc_get_product_cat_class( $class = '', $category = null ){
     global $woocommerce_loop;
     $classes   = is_array( $class ) ? $class : array_map( 'trim', explode( ' ', $class ) );
     $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 ) );
    }

我已经在我的子主题中创建了一个functions.php文件。如何删除和替换wc_get_product_cat_class函数?

据我所知,子主题中的functions.php文件首先加载,但是在wc-template-functions.php中没有if(!行),我无法简单地添加和修改上面的内容我自己的函数文件。

1 个答案:

答案 0 :(得分:0)

以下是如何通过product_cat_class过滤产品类的示例。我不知道您希望特定类出现在哪里,所以这只是一个示例。注意,$woocommerce_loop['loop']是循环中项目的位置/计数。并且它不在这个示例中,但您可以在核心wc_get_product_cat_class()函数中看到它....`$ woocommerce ['columns']是列数,也就是每行的产品数。

function so_35164526_cat_class( $classes, $class, $category= null ){
    global $woocommerce_loop;
    if ( 0 === $woocommerce_loop['loop'] % 4 ) {
        $classes[] = 'col-md-4';
    } elseif ( 0 === $woocommerce_loop['loop'] % 2 ) {
        $classes[] = 'col-xs-2 ';
    } 
    return $classes;
}
add_filter( 'product_cat_class', 'so_35164526_cat_class', 10, 3 );