The中的wc_get_product_cat_class函数将'first‘和'last’类添加到我的一些<li>元素中。
我想删除这些类。有人知道如何在不编辑实际的Woocommerce函数的情况下在我的functions.php中覆盖它吗?
我到处都找过了,但没有找到任何解决方案。我在这方面还是个新手,希望这不是一个愚蠢的问题:
下面是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>发布于 2017-12-07 02:51:06
虽然延迟了,但我想这可能会有帮助。您可以定义自己的wc_product_cat_class函数并从content-Productcat.php调用它
例如:如果你想删除"first“和"last”类,你可以使用下面的代码。
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() ?>
发布于 2016-04-30 18:57:56
也许为时已晚,但希望也会有人需要它……
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 ); ?>>https://stackoverflow.com/questions/35449615
复制相似问题