2016-02-02 4 views
1

Я использую тему Unite с Woocommerce и вам нужно заменить функцию wc_get_product_cat_class. После того, как всю ночь, пытаясь понять это, я обнаружил, что следующий хранятся в /wp-content/plugins/woocommerce/includes/wc-template-functions.phpЗаменить функцию Wordpress (WooCommerce)

// 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)); 
    } 

Я уже создал функцию .php в моей дочерней теме. Как удалить и заменить функцию wc_get_product_cat_class?

Как я понимаю, файл functions.php в дочерней теме загружается первым, но в случае отсутствия строки if (!) В wc-template-functions.php, я не могу просто добавить и изменить выше к моему собственному файлу функций.

+0

Зачем вам нужно его заменять, если вы можете фильтровать 'product_cat_class'? И какие изменения нужно сделать? – helgatheviking

+0

Мне нужно заменить и добавить к сгенерированным классам. – Stuart

+0

Можете ли вы перефразировать свой вопрос, чтобы объяснить, какие классы вам нужно изменить? Это * точно * точка фильтра, поэтому замена функции кажется излишней. – helgatheviking

ответ

0

Вот пример того, как фильтровать классы продукта через product_cat_class. Я не знаю точно, где вы хотите, чтобы определенные классы отображались, поэтому это всего лишь пример. Примечание. $woocommerce_loop['loop'] - это позиция/count элемента в цикле. И это не в этом примере, но вы можете увидеть его в ядре wc_get_product_cat_class() function .... `$ woocommerce ['columns'] - количество столбцов aka продуктов в строке.

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); 
Смежные вопросы