Як у WooCommerce замість нульової ціни вивести "FREE"
Привіт:) У цьому пості покажу невеликий сніпет, який дозволить у картці товару WooCommerce замість нульової ціни виводити "FREE" або інший текст.
У старих версіях плагіну на сторінці товару із порожньою (нульовою) ціною автоматично відображався текст "Безкоштовно", і такий товар не можна було опублікувати/замовити. У нових версіях цей функціонал був змінений. Але якщо все ж потрібно повернути назад цю поведінку, у файлі functions.php додайте рядки коду
/**
* https://www.businessbloomer.com/woocommerce-display-free-instead-0-00-empty-price/
*/
if ( ! function_exists( 'mp_price_free_zero' ) ) {
function mp_price_free_zero( $price, $product ) {
if ( $product->is_type( 'variable' ) ) {
$prices = $product->get_variation_prices( true );
$min_price = current( $prices['price'] );
if ( 0 == $min_price ) {
$max_price = end( $prices['price'] );
$min_reg_price = current( $prices['regular_price'] );
$max_reg_price = end( $prices['regular_price'] );
if ( $min_price !== $max_price ) {
$price = wc_format_price_range( 'FREE', $max_price );
$price .= $product->get_price_suffix();
} elseif ( $product->is_on_sale() && $min_reg_price === $max_reg_price ) {
$price = wc_format_sale_price( wc_price( $max_reg_price ), 'FREE' );
$price .= $product->get_price_suffix();
} else {
$price = 'FREE';
}
}
} elseif ( 0 == $product->get_price() ) {
$price = '<span class="woocommerce-Price-amount amount">FREE</span>';
}
return $price;
}
}
add_filter( 'woocommerce_get_price_html', 'mp_price_free_zero', 9999, 2 );
Це виглядатиме приблизно так:
Якщо потрібно виводити інший текст, замініть "FREE" на потрібний вам у наступному рядку
<span class="woocommerce-Price-amount amount">FREE</span>