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

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

Мой вопрос:
Как я могу добавить ярлык как "Old Price: XX Dollar" а также "New Price: XX Dollar" а не только зачеркнуто и новая цена (продажная цена)?

2 ответа

Решение

Обновление 2 (для простых и переменных продуктов + исправлена ​​ошибка при одинаковых колебаниях цен)

когда продукты поступают в продажу, вы можете добавлять пользовательские ярлыки так, как вы хотите, используя пользовательские функции, подключенные в woocommerce_sale_price_html а также woocommerce_variation_sale_price_htmlфильтры крючки (для простых и переменных продуктов.

Для минимальных / максимальных цен в переменных продуктах нам нужна другая функция, подключенная к woocommerce_variation_sale_price_html фильтр-крючок.

Вот этот код:

add_filter('woocommerce_variation_sale_price_html','sale_prices_custom_labels', 10, 2 );
add_filter('woocommerce_sale_price_html','sale_prices_custom_labels', 10, 2 );
function sale_prices_custom_labels( $price, $product ){
    if (isset($product->sale_price)) {
        $price = '<del class="strike">' . __('Old Price: ', 'woocommerce' ) . woocommerce_price( $product->regular_price ). '</del>
        <ins class="highlight">' . __('New Price: ', 'woocommerce' ) . woocommerce_price( $product->sale_price ) . '</ins>';
    }
    else
    {
        $price = '<ins class="highlight">'.woocommerce_price( $product->regular_price ).'</ins>';
    }
    return $price;
}

add_filter('woocommerce_variable_sale_price_html', 'sale_prices_custom_labels_min_max', 20, 2);
function sale_prices_custom_labels_min_max( $price, $product) {

    $variation_min_reg_price = $product->get_variation_regular_price('min', true);
    $variation_max_reg_price = $product->get_variation_regular_price('max', true);
    $variation_min_sale_price = $product->get_variation_sale_price('min', true);
    $variation_max_sale_price = $product->get_variation_sale_price('max', true);

    if ( $variation_min_reg_price != $variation_min_sale_price || $variation_max_reg_price != $variation_max_sale_price )
    {
        if($variation_min_reg_price == $variation_max_reg_price && $variation_min_sale_price == $variation_max_sale_price ){
            $price = '<del class="strike">' . __('Old Price: ', 'woocommerce' ) . woocommerce_price($variation_max_reg_price) . '</del>
            <ins class="highlight">' . __('New Price: ', 'woocommerce' ) . woocommerce_price($variation_max_sale_price) . '</ins>';
        }
        elseif($variation_min_reg_price != $variation_max_reg_price && $variation_min_sale_price == $variation_max_sale_price )
        {
            $price = '<del class="strike">' . __('Old Price: ', 'woocommerce' ) . woocommerce_price($variation_min_reg_price) . '-' . woocommerce_price($variation_max_reg_price) . '</del>
            <ins class="highlight">' . __('New Price: ', 'woocommerce' ) . woocommerce_price($variation_max_sale_price) . '</ins>';
        }
        elseif($variation_min_reg_price == $variation_max_reg_price && $variation_min_sale_price != $variation_max_sale_price )
        {
            $price = '<del class="strike">' . __('Old Price: ', 'woocommerce' ) . woocommerce_price($variation_max_reg_price) . '</del>
            <ins class="highlight">' . __('New Price: ', 'woocommerce' ) . woocommerce_price($variation_min_sale_price) . '-' . woocommerce_price($variation_max_sale_price) . '</ins>';
        }
        else
        {
        $price = '<del class="strike">' . __('Old Price: ', 'woocommerce' ) . woocommerce_price($variation_min_reg_price) . '-' . woocommerce_price($variation_max_reg_price) . '</del>
        <ins class="highlight">' . __('New Price: ', 'woocommerce' ) . woocommerce_price($variation_min_sale_price) . '-' . woocommerce_price($variation_max_sale_price) . '</ins>';
        }
    }
    return $price;
}

Вы также можете заменить нормальный <ins> а также <del> html-теги чем-то другим и тоже измените или добавьте некоторые классы (если вам удобнее). На данный момент все возможно.

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

Этот код протестирован и работает.


Связанные ответы: условный заказной продукт по продажной цене и обычной цене

На административной стороне вам нужно определить цену продажи и фактическую цену, чтобы она автоматически отображалась на передней стороне как ваша старая цена и новая цена поочередно.

Также вам нужно сделать код для этого.

Другие вопросы по тегам