【问题标题】:Replace a Wordpress (WooCommerce) Function替换 Wordpress (WooCommerce) 功能
【发布时间】:2016-02-02 21:55:16
【问题描述】:

我在 Woocommerce 中使用 Unite 主题,需要替换 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(! 行的情况下,我无法简单地添加和修改上述内容我自己的函数文件。

【问题讨论】:

  • 既然可以过滤product_cat_class,为什么还需要替换它?您需要进行哪些修改?
  • 我需要替换并添加到生成的类中。
  • 你能改写你的问题来解释你需要修改哪些类吗?这正是过滤器的重点,所以替换函数似乎有点过头了。
  • 过滤器添加一个类,该类应用于其中一个 achive 页面上的产品循环。我需要为引导列 col-xs-2 col-md-4 等添加一个类。
  • 您何时尝试添加这些类? IE。什么课去哪里?

标签: php wordpress woocommerce


【解决方案1】:

这是一个如何通过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 );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 2015-04-12
    • 1970-01-01
    • 2019-08-17
    • 2013-05-18
    • 2015-04-14
    • 1970-01-01
    相关资源
    最近更新 更多