У меня есть этот код ниже, который показывает выбранную цену изменения после того, как пользователь выбрал вариант
add_filter( 'woocommerce_show_variation_price', 'filter_show_variation_price', 10, 3 ); function filter_show_variation_price( $condition, $product, $variation ){ if( $variation->get_price() === "" ) return false; else return true; }
Мне нужно рассчитать процент скидки между рекламной ценой, которая будет отображаться, и обычной ценой. НО ТОЛЬКО после того, как выбран вариант, а не раньше (потому что я удалю цену с показа до css).
Я думаю, что этот ответ близок, но пока нет.
Все приведенный ниже код будет работать для переменных продуктов только на страницах одного продукта.
Второй код из связанного ответа, который я делаю раньше, просто отлично работает. Я горжусь некоторыми небольшими изменениями для нацеливания только переменных продуктов.
Я добавил дополнительную функцию, которая будет удалять отображаемую цену под заголовком только для переменных продуктов.
Вот весь необходимый код:
// Always Display the selected variation price for variable products (already working) add_filter( 'woocommerce_show_variation_price', 'filter_show_variation_price', 10, 3 ); function filter_show_variation_price( $condition, $product, $variation ){ if( $variation->get_price() === "" ) return false; else return true; } // Remove the displayed price from variable products in single product pages only add_action( 'woocommerce_single_product_summary', 'remove_the_displayed_price_from_variable_products', 9 ); function remove_the_displayed_price_from_variable_products() { global $product; // Just for variable products if( ! $product->is_type('variable') ) return; // Remove the displayed price from variable products remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 ); } // Display the selected variation discounted price with the discounted percentage for variable products add_filter( 'woocommerce_format_sale_price', 'woocommerce_custom_sales_price', 10, 3 ); function woocommerce_custom_sales_price( $price, $regular_price, $sale_price ) { global $product; // Just for variable products on single product pages if( $product->is_type('variable') && is_product() ) { // Getting the clean numeric prices (without html and currency) $regular_price = floatval( strip_tags($regular_price) ); $sale_price = floatval( strip_tags($sale_price) ); // Percentage calculation and text $percentage = round( ( $regular_price - $sale_price ) / $regular_price * 100 ).'%'; $percentage_txt = __(' Save ', 'woocommerce' ).$percentage; return '<del>' . wc_price( $regular_price ) . '</del> <ins>' . wc_price( $sale_price ) . $percentage_txt . '</ins>'; } return $price; }
Код идет в файле function.php вашей активной дочерней темы (или темы), а также в любом файле плагина.
Этот код протестирован и в основном работает только для WooCommerce версии 3+