Заменить & quot; Продажа & quot; значок «Нет на складе» на страницах архива Woocommerce

Я работаю в магазине WooCommerce и здесь ссылка на страницу сайта магазина

На этой странице первый продукт out of stock, Я хотел бы показать Out of stock вместо «распродажа!» значок на изображении.

Как я могу это сделать?

1

Решение

Если вы посмотрите на шаблон loop / sale-flash.php, то увидите, что в нем есть фильтр для продажи flash. Вы можете добавить это в свой файл functions.php, чтобы изменить этот вывод.

add_filter( 'woocommerce_sale_flash', 'sale_flash_stock_status' );
function sale_flash_stock_status( $output_html, $post, $product ){
if( $product->is_in_stock() ){
// Leave the sale flash unchanged if it's in stock.
return $output_html;
}
else {
// Change the html output custom stock status
$output_html = '<span class="stock-status">' . esc_html__( 'Out of stock', 'woocommerce' ) . '</span>'
return $output_html;
}
}
1

Другие решения

Добавьте в файл functions.php вашей темы:

add_filter('woocommerce_sale_flash', 'woocommerce_custom_sale_text', 10, 3);
function woocommerce_custom_sale_text($text, $post, $_product)
{
return '<span class="onsale">out of stock</span>';
}
1

Следующий код добавит на страницах архивов Woocommerce (как в магазине) значок «Нет в наличии», заменяющий «Распродажа!». знак, когда продукты продаются:

// Add badge  "Out of stock" (and replace sale badge)
add_action('woocommerce_before_shop_loop_item_title','custom_before_shop_loop_item_title', 2 ); // Archives pages
function custom_before_shop_loop_item_title(){
remove_action('woocommerce_before_shop_loop_item_title','woocommerce_show_product_loop_sale_flash', 10 );
remove_action('woocommerce_after_shop_loop_item_title','woocommerce_show_product_loop_sale_flash', 6 ); // For storefront theme
add_action('woocommerce_before_shop_loop_item_title','show_product_loop_outofstock_badge', 10 );
}

function show_product_loop_outofstock_badge(){
global $post, $product;

if ( $product->get_stock_status() == 'outofstock' ) :
echo '<span class="onsale outofstock">'. esc_html__('Out of stock', 'woocommerce') .'</span>';
elseif ( $product->is_on_sale() ) :
echo '<span class="onsale">'. esc_html__( 'Sale!', 'woocommerce' ) .'</span>';
endif;
}

Возможно, вам придется внести некоторые изменения приоритета в зависимости от вашей темы. Этот код поддерживает также тему магазина.

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

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

1