Woocommerce中的wc_get_product_cat_class
函数wc-template-functions.php添加了类&#39;首先&#39;并且&#39;最后&#39;我的一些<li>
元素。
我想删除这些类。有没有人知道我怎么能在我的functions.php中覆盖它而不编辑实际的Woocommerce功能?
我到处搜索但无法找到任何解决方案。我还是很陌生,希望这不是一个愚蠢的问题:/
以下是wc-template-functions.php
的功能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模板的代码,它调用函数
<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>
答案 0 :(得分:0)
延迟但认为这可能会有所帮助。您可以定义自己的wc_product_cat_class函数并从content-product_cat.php中调用它
例如: 如果你想删除&#34;第一个&#34;和&#34;最后&#34; class,你可以使用下面的代码。
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() ?>
答案 1 :(得分:-1)
也许它有点太晚了但希望有人也会需要它......
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行):
<div <?php wc_product_cat_class( '', $category ); ?>>