Заменить текст Select Option по умолчанию в раскрывающихся списках атрибутов вариантов Woocommerce на другие настраиваемые

Я только начинаю работать с Woocommerce, и у меня есть вопрос о раскрывающемся поле выбора для переменных продуктов. В woocommerce, когда в этом раскрывающемся списке ничего не выбрано, отображается текст «Выбрать вариант».

Мне нужно, чтобы каждый вариант поля выбора в раскрывающемся списке отображал другой текст, когда еще ничего не было выбрано.

Я нашел этот код, который заменяет стандартный текст «Select Option» на все, что я хочу, но он применяется ко всем полям выбора в раскрывающемся списке.

  function custom_woocommerce_product_add_to_cart_text($args){
 $args['show_option_none'] = __( 'Select Framed or Unframed Sizes', 'woocommerce' ); 
  return $args;
}

Я заметил, что первое выпадающее поле выбора имеет идентификатор, который является «типом», а второе - идентификатором «размер».

Можем ли мы изменить приведенный выше код и получить что-то вроде:

  • если ID = type, используйте текст A,
  • если ID = size, использовать текст B?

Также могу ли я заставить первый раскрывающийся список всегда отображать все параметры?

Допустим, в моем первом раскрывающемся списке есть варианты A, B, C и D:

  • Если я выберу A, второй раскрывающийся список предложит мне варианты 1, 2, 3. Я выбираю 2.
  • Если теперь я попытаюсь сделать другой выбор в первом поле, он покажет мне только A и C и оставит B и D, поскольку B и D недоступны в 1 и 3.

Звучит запутанно, но я надеюсь, что в этом есть смысл.

Любая помощь приветствуется.


person user2264325    schedule 27.01.2018    source источник
comment
И в идеале скройте второй раскрывающийся список, пока не будет сделан выбор в первом. Кажется, что в моей теме уже есть AJAX, так как это связано с ценой. еще раз спасибо.   -  person user2264325    schedule 28.01.2018


Ответы (1)


В woocommerce идентификаторы атрибутов (или таксономия) начинаются с pa_ как "p roduct a ttribute", поэтому :

  • Тег <select> html для типа должен содержать: id="pa_type" (но не id="type"),
  • Тег <select> html для размера должен иметь: id="pa_size" (но не id="size").

Теперь вы можете настроить таргетинг на каждый атрибут по его таксономии следующим образом:

add_filter( 'woocommerce_dropdown_variation_attribute_options_args', 'dropdown_variation_attribute_options', 10, 1 );
function dropdown_variation_attribute_options( $args ){

    // For attribute "Type"
    if( 'pa_type' == $args['attribute'] )
        $args['show_option_none'] = __( 'Select Framed or Unframed Types', 'woocommerce' );

    // For attribute "Sizes"
    if( 'pa_size' == $args['attribute'] )
        $args['show_option_none'] = __( 'Select Framed or Unframed Sizes', 'woocommerce' );

    return $args;
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы).

Проверено и работает.


Вы задаете много разных вопросов. Здесь я отвечу только на один. Это способ на StackOverFlow.

В WooCommerce возможно все, в зависимости от ваших знаний, навыков и времени, которое вы потратите.

Ваш второй вопрос - это что-то сложное, сложное и слишком широкое.

person LoicTheAztec    schedule 28.01.2018
comment
Большое спасибо. Это сработало. Есть ли проблема с сохранением идентификаторов типа и размера без добавления pa_? Woocommerce создал его как тип и размер, когда я добавил эти атрибуты в бэкэнд для вариантов. - person user2264325; 28.01.2018