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

Хотелось бы отобразить процентную переменную товара со скидкой на страницах архива.Используя приведенный ниже код, я смог получить как% скидки на переменные продукты, так и простые продукты.Могу ли я сделать это ТОЛЬКО для переменных продуктов, а не простых продуктов?Я понимаю, что это, вероятно, простая настройка в коде, но я не могу понять это, потому что я идиот, когда дело доходит до PHP.

add_action( 'woocommerce_after_shop_loop_item', 'show_sale_percentage', 25 );

function show_sale_percentage() {

global $product;

if ( $product->is_on_sale() ) {

if ( ! $product->is_type( 'variable' ) ) {

$max_percentage = ( ( $product->get_regular_price() - $product->get_sale_price() ) / $product->get_regular_price() ) * 100;

} else {

$max_percentage = 0;

foreach ( $product->get_children() as $child_id ) {
$variation = wc_get_product( $child_id );
$price = $variation->get_regular_price();
$sale = $variation->get_sale_price();
if ( $price != 0 && ! empty( $sale ) ) $percentage = ( $price - $sale ) / $price * 100;
if ( $percentage > $max_percentage ) {
    $max_percentage = $percentage;
}
}

}

echo "<div class='saved-sale'>-" . round($max_percentage) . "%</div>";

}
}

1 Ответ

0 голосов
/ 17 октября 2018

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

add_action( 'woocommerce_after_shop_loop_item', 'loop_variable_product_sale_percentage', 25 );
function loop_variable_product_sale_percentage() {
    global $product;

    if ( $product->is_on_sale() && $product->is_type( 'variable' ) ) {
        $max_percentage = 0;

        foreach ( $product->get_children() as $child_id ) {
            $variation = wc_get_product( $child_id );
            $percentage = 0;

            $price = $variation->get_regular_price();
            $sale = $variation->get_sale_price();

            if ( $price != 0 && ! empty( $sale ) ) {
                $percentage = ( $price - $sale ) / $price * 100;
            }
            if ( $percentage > $max_percentage ) {
                $max_percentage = $percentage;
            }
        }
        echo '<div class="saved-sale">-' . round($max_percentage) . '%</div>';
    }
}

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

...