Woocommerce — отображать самую низкую цену только на странице категории (архив)

Я пытаюсь отобразить самую низкую цену вместо диапазона цен на страницах категорий, продолжая отображать диапазон цен на отдельных страницах продукта.

Я нашел этот ответ от чужого вопроса:

add_filter('woocommerce_variable_price_html', 'custom_variation_price', 10, 2);

function custom_variation_price( $price, $product ) {

$price = '';

if ( !$product->min_variation_price || $product->min_variation_price !== $product->max_variation_price ) {
$price .= '<span class="from">' . _x('From', 'min_price', 'woocommerce') . ' </span>';
$price .= woocommerce_price($product->get_price());
}

return $price;
}

И это работает, но когда я помещаю код в functions.php, это относится ко всему сайту. Я только хочу, чтобы это применялось к страницам категорий.

Кроме того, когда я использую этот код, товары с единственной ценой не отображаются.

Что я могу сделать?

Вот скриншот того, что я имею в виду:
Снимок экрана текущей страницы категории

2

Решение

Если я вас правильно понял, вам просто нужно отображать минимальную цену, когда есть диапазон цен. Так что в основном вам нужно изменить $priceHTML, только если установлена ​​минимальная цена товара (если она не установлена, тогда товар имеет единую цену и никаких изменений не требуется). Я также включил проверку, является ли это страницей категории. Вот код:

add_filter('woocommerce_variable_price_html', 'custom_variation_price', 10, 2);
function custom_variation_price( $price, $product ) {
if ( ! empty($product->min_variation_price) && is_product_category() ) {
$price = '<span class="from">' . _x('From', 'min_price', 'woocommerce') . ' </span>';
$price .= woocommerce_price($product->get_price());
}

return $price;
}
0

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

Других решений пока нет …

По вопросам рекламы [email protected]