Отобразить суффикс цены выбранного варианта в переменных продуктах Woocommerce

Я использую эту функцию, поэтому я получаю цену изменения по умолчанию, но я хочу показать свой суффикс цены после цены:

add_filter('woocommerce_variable_price_html', 'custom_variation_price', 10, 2);
function custom_variation_price( $price, $product ) {
    foreach($product->get_available_variations() as $pav){
        $def=true;
        foreach($product->get_variation_default_attributes() as $defkey=>$defval){
            if($pav['attributes']['attribute_'.$defkey]!=$defval){
                $def=false;             
            }   
        }
        if($def){
            $price = $pav['display_price'];         
        }
    }   
    return woocommerce_price($price);
}

То, что я получаю сейчас, например, "€15,00", но я хочу, чтобы оно показало "€15,00 за килограмм", а "за килограмм" - суффикс цены.

1 ответ

Решение

Ваш код устарел с Woocommerce 3 ( get_variation_default_attributes() а также woocommerce_price() устарели).

Будет отображаться суффикс цены выбранного варианта для Woocommerce 3:

add_filter('woocommerce_available_variation', 'display_variation_price_suffixed', 10, 3 );
function display_variation_price_suffixed( $variation_data, $product, $variation ) {
    $variation_data['price_html'] .= ' <span class="price-suffix">' . __("per kilo", "woocommerce") . '</span>';

    return $variation_data;
}

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

При необходимости вы можете использовать $variation_data['attributes'] массив для целевых значений определенных атрибутов продукта в цикле foreach.

Для информации, фильтр крючок woocommerce_available_variation находится внутри WC_Product_Variableget_available_variation() метод.

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