@mynevermoree

Как вывести вместо бейджа «скидка»,скидку в процентах в woocommerce?

Как вывести вместо бейджа "скидка",скидку в процентах в woocommerce? Ну т.е чтоб в бейдже выводило условно -30% итд.Думаю явно же есть хук какой то.
  • Вопрос задан
  • 2128 просмотров
Пригласить эксперта
Ответы на вопрос 2
Ну в общем то ничего сложного.
Немножечко кодика

add_action( 'woocommerce_sale_flash', 'pancode_echo_sale_percent' );

/**
 * Echo discount percent badge html.
 *
 * @param string $html Default sale html.
 *
 * @return string
 */
function pancode_echo_sale_percent( $html ) {
	global $product;

	/**
	 * @var WC_Product $product
	 */

	$regular_max = 0;
	$sale_min    = 0;
	$discount    = 0;

	if ( 'variable' === $product->get_type() ) {
		$prices      = $product->get_variation_prices();
		$regular_max = max( $prices['regular_price'] );
		$sale_min    = min( $prices['sale_price'] );
	} else {
		$regular_max = $product->get_regular_price();
		$sale_min    = $product->get_sale_price();
	}

	if ( ! $regular_max && $product instanceof WC_Product_Bundle ) {
		$bndl_price_data = $product->get_bundle_price_data();
		$regular_max     = max( $bndl_price_data['regular_prices'] );
		$sale_min        = max( $bndl_price_data['prices'] );
	}

	if ( floatval( $regular_max ) ) {
		$discount = round( 100 * ( $regular_max - $sale_min ) / $regular_max );
	}

	return '<span class="onsale">-&nbsp;' . esc_html( $discount ) . '%</span>';
}

и результат

5e75dab8106bc279378429.png


Но если Вы захотите добавить разные ярлычки, например для товаров которые не имеют скидки, то тут без переноса шаблона не обойтись. К сожалению разработчики woocommerce жестко закодировали в шаблоне условие проверки товара на наличие скидки.
Ответ написан
azerphoenix
@azerphoenix
Java Software Engineer
Есть готовые плагины... Например, YITH WooCommerce Badge Management
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы