Переменные продукты WooCommerce: отображение минимальной цены с пользовательским текстом для разных цен - PullRequest
0 голосов
/ 08 июля 2019

Я настраиваю функцию для Woocommerce, которая отображает цену со скидкой и обычную цену для переменного продукта, эта функция добавляет текст «от» до диапазона цен.

Переменные продукты " WooCommerce: сохраняйте только минимальную цену с пользовательской меткой " ответная цепочка лучше всего соответствует тому, что я ищу, и работает как шарм!

Но когда все вариации в переменном продукте имеют одинаковые цены, «начинать с» отображать не следует.

Итак, я сделал простую попытку и добавил под условием "если"

else {
    $price = sprintf( __( '%1$s', 'woocommerce' ), $min_price_html );
return $price;
}

и интегрировать в условие if:

$price = sprintf( __( 'À partir de %1$s', 'woocommerce' ), $min_price_html );
    return $price; 

Но на самом деле это не работает. Некоторая помощь приветствуется.

1 Ответ

1 голос
/ 16 июля 2019

Для обработки, когда все варианты переменного продукта одинаковы, вам нужно использовать array_unique() php функцию и count(), чтобы посмотреть, все ли цены вариантов одинаковы.

Так что код будет немного другим:

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 );
    $count  = (int) count( array_unique( $prices['price'] ));

    // When all variations prices are the same
    if( $count === 1 )
        return $price;

    $min_price = current( $prices['price'] );
    $min_keys  = current(array_keys( $prices['price'] ));

    $min_reg_price  = $prices['regular_price'][$min_keys];
    $min_price_html = wc_price( $min_price ) . $product->get_price_suffix();

    // When min price is on sale (Can be removed)
    if( $min_reg_price != $min_price ) {
        $min_price_reg_html = '<del>' . wc_price( $min_reg_price ) . $product->get_price_suffix() . '</del>';
        $min_price_html = $min_price_reg_html .'<ins>' . $min_price_html . '</ins>';
    }
    $price = sprintf( __( 'À partir de %s', 'woocommerce' ), $min_price_html );

    return $price;
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...