Переместить цену выбранного варианта ниже формы дополнений к продукту в Woocommerce

#php #wordpress #woocommerce #price #variations

#php #wordpress #woocommerce #Цена #варианты продукта

Вопрос:

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

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

Скриншот, показывающий текущее местоположение и желаемое местоположение:

введите описание изображения здесь

Мы высоко ценим любую помощь.

Ответ №1:

Плагин WooCommerce для дополнения продукта уже отображает пользовательскую таблицу цен непосредственно перед кнопками «Добавить в корзину», где отображается цена выбранного варианта с ценой выбранного варианта с промежуточным итогом:

введите описание изображения здесь

Вы не можете перемещать только отображаемую цену выбранного варианта в одиночку, поскольку она управляется javascript в событии выбора в реальном времени и группируется по наличию варианта и описанию варианта (если таковое имеется).

Итак, что вы можете сделать, это:

1) Переместить цену варианта с указанием его наличия и описания перед кнопкой добавить в корзину, используя:

 add_action( 'woocommerce_before_variations_form', 'reposition_display_for_variable_products', 10 );
function reposition_display_for_variable_products() {
    global $product;

    if( $product_addons = $product->get_meta('_product_addons') ) {
        if( sizeof($product_addons) > 0 ) {
            remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation', 10 );
            add_action( 'woocommerce_single_variation', 'woocommerce_single_variation', 16 );
        }
    }
}
  

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

Но она будет отображаться после таблицы цен пользовательского «Дополнения»:

введите описание изображения здесь


2) скрыть цену варианта Woocommerce (поскольку она уже отображается в таблице цен пользовательского «Дополнения»)

 add_filter( 'woocommerce_available_variation', 'hide_variation_selected_price', 10, 3 );
function hide_variation_selected_price( $data, $product, $variation ) {
    if( $product_addons = $product->get_meta('_product_addons') ) {
        if( sizeof($product_addons) > 0 ) {
            $data['price_html'] = '';
        }
    }
    return $data;
}
  

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

введите описание изображения здесь


3) Используйте оба варианта вместе, переместив доступность варианта и описание варианта после таблицы цен «Addon» и перед кнопкой «Добавить в корзину»:

введите описание изображения здесь

Комментарии:

1. Спасибо, это было очень полезно.

Ответ №2:

 jQuery('.price').insertAfter('.sauce')
  

интерфейсное решение (просто установите правильные селекторы)

Ответ №3:

Чтобы переместить итоговое размещение дополнений к продукту, вы можете добавить это в свой functions.php файл:

 if( isset($GLOBALS['Product_Addon_Display']) ){
  remove_action( 'woocommerce_product_addons_end', array( $GLOBALS['Product_Addon_Display'], 'totals' ), 10 );
}
  

И если вы хотите добавить его обратно:

 if( isset($GLOBALS['Product_Addon_Display']) ){
  add_action( 'some_action_hook', array( $GLOBALS['Product_Addon_Display'], 'totals' ), 10 );
}
  

Однако вы должны убедиться в двух вещах:

  1. Вы должны передать идентификатор (или некоторый идентификатор) в качестве параметра вашему новому подключению.
  2. JS, который генерирует итоговые данные, ищет их #product-addons-total внутри некоторого .cart элемента.