Woocommerce: на странице товара отображаются только некоторые варианты - PullRequest
0 голосов
/ 27 июня 2018

У меня есть веб-сайт Woocommerce со множеством различных продуктов. Эти продукты имеют множество вариантов цвета и размера.

Я бы хотел ограничить отображаемые варианты в зависимости от того, к какой категории относится товар.

Я думал о создании нескольких переменных продуктов, но это будет иметь значение для акций. Мне нужен один переменный продукт, но несколько «просмотров» продукта, которые ограничивают отображаемые варианты.

Определение родительской категории не проблема. Я не могу понять, как ограничить количество отображаемых вариантов. Я мог бы предотвратить покупку определенных вариантов, используя фильтр Woocommerce woocommerce_available_variation, но на самом деле я хочу удалить все параметры со страницы вместе.

Я вижу справочную документацию по "невидимым" и "отключенным" вариантам, но не могу понять, как я мог бы использовать их.

Я обнаружил два фильтра woocommerce_variation_is_active и woocommerce_variation_is_visible, которые позволяют скрыть или скрыть определенную информацию для определенного варианта. Это все еще не позволяет мне не показывать их все вместе.

1 Ответ

0 голосов
/ 02 июля 2018

Мой клиент запросил нечто подобное, я обошел стороной.

В моем шаблоне была папка woocommerce для переопределения только определенных php-файлов, которые мне нужны, я полагаю, вы можете или уже добавили ее.

Тогда файл, отвечающий за отображение поля выбора для переменной, находится по адресу:

/ WooCommerce / монопродуктовый / добавить к тележке / variable.php

Итак, мы видим цикл, который рисует выборки для каждого атрибута.

вы бы хотели, чтобы ненужные поля были сброшены до того, как они будут переданы в функцию "wc_dropdown_variation_attribute_options", которая их рисует.

так вот что вам (примерно) нужно сделать:

<?php foreach ( $attributes as $attribute_name => $options ) : 

// you want to target shirts category
if ( is_product() && has_term( 'shirts', 'product_cat' ) {
 // you don't want a whole attribute displayed
  if ( $attribute_name == 'Colour'){
    unset($attribute_name);
  }
}

// if you don't want few specific items then 
if ( $attribute_name == 'Sizes'){ // color or size
    $options_temp = $options;           

    foreach ( $options_temp as $key => $option )
     {
       if ($option = 'XXL'){ 
        unset($options[$key]); // unset that option from REAL array
       }
     }
}
?>

адаптировать код к вашим потребностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...