Отображение цены со скидкой по умолчанию и процентов в продуктах Woocommerce - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь отобразить процентную скидку на товар в Woocommerce.Первоначально предоставленное решение (ссылка ниже) работает, однако процент скидки не отображается при наличии набора вариантов продукта по умолчанию.Только когда выбор изменяется на другой вариант, появляется процентная скидка.Как изменить код для отображения скидки в процентах без необходимости выбора другого варианта?

Исходный код: Отображение цены со скидкой и процентов в продуктах Woocommerce (вариант 2)

2) Процент экономии:

add_filter( 'woocommerce_get_price_html',     'change_displayed_sale_price_html', 10, 2 );
function change_displayed_sale_price_html( $price, $product ) {
     // Only on sale products on frontend and excluding min/max price on variable products
    if( $product->is_on_sale() && ! is_admin() && ! $product->is_type('variable')){
         // Get product prices
         $regular_price = (float) $product->get_regular_price(); // Regular price
         $sale_price = (float) $product->get_price(); // Active price (the "Sale price" when on-sale)

         // "Saving Percentage" calculation and formatting
         $precision = 1; // Max number of decimals
         $saving_percentage = round( 100 - ( $sale_price / $regular_price * 100 ), 1 ) . '%';

         // Append to the formated html price
         $price .= sprintf( __('<p class="saved-sale">Save: %s</p>', 'woocommerce' ), $saving_percentage );
    }
    return $price;
}

1 Ответ

0 голосов
/ 26 января 2019

Связанный код работает также при наличии выбранного по умолчанию варианта (в продаже) для переменного продукта и правильно отображает процент скидки…

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

Для выбранных вариантов товара в продаже цена, вы также можете использовать следующие данные, чтобы получить процент экономии:

// For product variations
add_filter( 'woocommerce_available_variation', 'custom_variation_price_saving_percentage', 10, 3 );
function custom_variation_price_saving_percentage( $data, $product, $variation ) {
    $active_price  = $data['display_price'];
    $regular_price = $data['display_regular_price'];

    if( $active_price !== $regular_price ) {
        $saving_percentage = round( 100 - ( $active_price / $regular_price * 100 ), 1 ) . '%';
        $data['price_html'] .= sprintf( __('<p class="saved-sale">Save: %s</p>', 'woocommerce' ), $saving_percentage );
    }
    return $data;
}

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

Тогда для простых продуктов вы будете использовать:

// For simple products
add_filter( 'woocommerce_get_price_html', 'change_displayed_sale_price_html', 10, 2 );
function change_displayed_sale_price_html( $price, $product ) {
     // Only on sale products on frontend and excluding min/max price on variable products
    if( $product->is_on_sale() && ! is_admin() && $product->is_type('simple') ){
         // Get product prices
         $regular_price = (float) $product->get_regular_price(); // Regular price
         $sale_price = (float) $product->get_price(); // Active price (the "Sale price" when on-sale)

         // "Saving Percentage" calculation and formatting
         $precision = 1; // Max number of decimals
         $saving_percentage = round( 100 - ( $sale_price / $regular_price * 100 ), $precision ) . '%';

         // Append to the formated html price
         $price .= sprintf( __('<p class="saved-sale">Save: %s</p>', 'woocommerce' ), $saving_percentage );
    }
    return $price;
}

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

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