2016-06-21 5 views

ответ

1

Попробуйте записать его на вершине файла: WooCommerce> Loop> петля-start.php

1

Если посмотреть основную функцию WooCommerce wc_get_loop_class в WooCommerce \ включает \ туалет-шаблонный functions.php вы найдете эту строку:

$woocommerce_loop['columns'] = max(1, ! empty($woocommerce_loop['columns']) ? $woocommerce_loop['columns'] : apply_filters('loop_shop_columns', 4)); 

Так что если $ woocommerce_loop ['columns'] не является пустым и не ниже 1 в этой точке процесса, ваш фильтр никогда не будет принят, и я полагаю, что это так.

Честно говоря, я не исследовал больше, однако в качестве решения я предлагаю:

add_filter('post_class', 'my_woo_modify_product_class',40,3); 
function my_woo_modify_product_class($classes, $class = '', $post_id = '') { 
    if (! $post_id || ! in_array(get_post_type($post_id), array('product', 'product_variation'))) { 
     return $classes; 
    } 
    $product = wc_get_product($post_id); 
    if ($product) { 
     if ($index = array_search('first', $classes)) { 
      unset($classes[ $index ]); 
     } 
     if ($index = array_search('last', $classes)) { 
      unset($classes[ $index ]); 
     } 
     global $woocommerce_loop; 
     $woocommerce_loop['loop'] = ! empty($woocommerce_loop['loop']) ? $woocommerce_loop['loop'] + 1 : 1; 
     $loop = 1 + absint(($woocommerce_loop['loop'] - 1)/2); 
     $cols = 4; 
     if (0 === ($loop - 1) % $cols || 1 === $cols) { 
      $classes[] = 'first'; 
     } elseif (0 === $loop % $cols) { 
      $classes[] = 'last'; 
     } 
    } 
    return $classes; 
} 

где $ COLS является желаемым числом столбцов Этого фильтра сбросьте первый 'и «последние» классов вызывают расположение двух столбцов и вводят их снова с учетом значения $ cols. $ woocommerce_loop ['loop'] - глобальная переменная Woocommerce, которая для каждого элемента продукта принимает значения 1,3,5, .... В любом случае я тестировал и работает с WooCommerce 3.0.7. Тогда вы все равно должны настроить продукт witdh с помощью css.

0

Set Priority 1.

add_filter('loop_shop_columns', 'loop_columns',1,10); 

if (!function_exists('loop_columns')) { 
    function loop_columns() { 
     return 4; // 3 products per row 
    } 
} 
Смежные вопросы