我使用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(!行),我无法简单地添加和修改上面的内容我自己的函数文件。
答案 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 );