Скрыть изменение ценового диапазона на страницах категорий Woocommerce - PullRequest
0 голосов
/ 25 января 2020

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

Также необходимо указать суффикс налога на добавленную стоимость "IVA в c". Этот суффикс установлен в конфигурации woocommerce.

Он отлично работает, за исключением того, что цена продажи до не отображается на странице категорий

Я не эксперт по программированию, я прилагаю усилия, чтобы заставить его работать.

Кроме того, возможно ли оптимизировать код?

//Move Variations price above variations to have the same template even if variations prices are the same
remove_action( 'woocommerce_single_variation', 'woocommerce_single_variation', 10 );
add_action( 'woocommerce_before_variations_form', 'woocommerce_single_variation', 10 ); 

//Remove Price Range
add_filter( 'woocommerce_variable_sale_price_html', 'detect_variation_price_format', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'detect_variation_price_format', 10, 2 );

function detect_variation_price_format( $price, $product ) {

// Main Price

$prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) );
if ($prices[0] !== $prices[1] && is_product()) {
    $price = $prices[0] !== $prices[1] ? sprintf( __( '', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
}
return $price;
}



add_filter( 'woocommerce_variable_price_html', 'custom_min_max_variable_price_html', 10, 2 );
function custom_min_max_variable_price_html( $price, $product ) {
    $prices = $product->get_variation_prices( true );
    $min_price = current( $prices['price'] );

    $min_price_html = wc_price( $min_price ) . $product->get_price_suffix();
    $price = sprintf( __( '%1$s', 'woocommerce' ), $min_price_html );

    return $price;
}

Цена до продажи предложения не показана в категории страницы

enter image description here

Страницы товара работают нормально

enter image description here

1 Ответ

2 голосов
/ 26 января 2020

Чтобы скрыть диапазон цен на страницах архива / магазина, вы можете просто переопределить функцию

woocommerce_template_loop_price, которая является подключаемой. Эта функция находится в /include/wc-template-functions.php

function woocommerce_template_loop_price() {
    // Just do nothing
    return;
}

Однако это уберет все цены от показа на странице магазина / архива.

РЕДАКТИРОВАТЬ : после того, как вопрос был обновлен в комментариях, это показывает, как ТОЛЬКО показать минимальную цену вариации для переменных продуктов на страницах магазина / архива.

function woocommerce_template_loop_price() {
    global $product;
    if ($product->get_type() == 'variable'){
        echo '<span class="price">' . wc_price($product->get_variation_regular_price('min')) . '</span>';
    } else {
        wc_get_template( 'loop/price.php' );
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...