2016-02-17 35 views
0

Woocommerce中的wc_get_product_cat_class函数wc-template-functions.php为我的某些<li>元素添加了类'first'和'last'。从wc_get_product_cat_class中删除类Woocommerce功能

我想删除这些类。有没有人知道我可以覆盖这在我的functions.php而不编辑实际的Woocommerce功能?

我到处搜索,但无法找到任何解决方案。我仍然很新的这个,希望这是不是一个太大的问题蠢蛋的:/

下面是从WC-模板的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)); 
} 

这是代码从调用该函数

<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

也许是有点为时已晚,但希望会有人需要它过于内容product_cat.php模板...

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); ?>> 
0

推迟,但认为这可能会有帮助。您可以定义自己的wc_product_cat_class函数,并从content-product_cat.php调用它

例如: 如果要删除“第一个”和“最后一个”类,可以使用下面的代码。

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)) . '"'; 
} 

现在你可以这样<?php ro_wc_product_cat_class() ?>

从内容product_cat.php称之为