#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 );
}
Однако вы должны убедиться в двух вещах:
- Вы должны передать идентификатор (или некоторый идентификатор) в качестве параметра вашему новому подключению.
- JS, который генерирует итоговые данные, ищет их
#product-addons-total
внутри некоторого.cart
элемента.