Добавьте индивидуальный значок к каждому способу доставки в WooCommerce

Я пытаюсь добавить собственный значок к каждому варианту доставки, но безрезультатно.

Я попробовал этот ответ: Добавление пользовательских значков к вариантам доставки в Woocommerce Cart и Checkout.

И мой код пока выглядит так:

add_filter( 'woocommerce_cart_shipping_method_full_label', 'filter_woocommerce_cart_shipping_method_full_label', 10, 2 ); 

function filter_woocommerce_cart_shipping_method_full_label( $label, $method ) { 
   // Use the condition here with $method to apply the image to a specific method.      

   if( $method->method_id == "shipping_method_0_flat_rate2" ) {
       $label = $label."https://example.com/wp-content/uploads/2020/05/icon.png";

   }
   return $label; 
}

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

Любая помощь приветствуется.


person mgatner    schedule 06.05.2020    source источник
comment
Вы проверили, верен ли ваш оператор if, значит, установлено значение $ label? Просто чтобы убедиться, это не проблема состояния.   -  person rank    schedule 07.05.2020


Ответы (1)


Вы очень близко ... Вам нужно использовать $method->id === "flat_rate:2" вместо $method->method_id == "shipping_method_0_flat_rate2" в операторе IF.

Также для значка необходимо включить полный тег <img> html со ссылкой на источник…

Итак, в вашем коде:

add_filter( 'woocommerce_cart_shipping_method_full_label', 'filter_woocommerce_cart_shipping_method_full_label', 10, 2 ); 

function filter_woocommerce_cart_shipping_method_full_label( $label, $method ) {      
   // Targeting shipping method "Flat rate instance Id 2"
   if( $method->id === "flat_rate:2" ) {
       $label .= '<img src="https://example.com/wp-content/uploads/2020/05/icon.png" />';

   }

   return $label; 
}

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

person LoicTheAztec    schedule 06.05.2020
comment
Спасибо. На будущее, если вы не против. Как мне узнать, что входит в объект $ label? Если вы можете указать мне на какие-то ресурсы, я буду признателен. - person mgatner; 07.05.2020
comment
Как узнать, например, что нужно присвоить $ label? Я указал неверный URL. Вы знали, что это должно быть в тегах. Где мне найти эти знания, не спрашивая здесь? Что мне читать? - person mgatner; 15.05.2020
comment
Аргумент $label - это не объект, а просто имя ярлыка (строка), которое отображается на страницах корзины и кассы для каждого доступного метода доставки… С другой стороны, аргумент $method является экземпляром объекта WC_Shipping_Rate. Вот все используемые свойства и методы для WC_Shipping_Rate Class. - person LoicTheAztec; 16.05.2020
comment
@mgatner Чтобы узнать, как изменить такие вещи, как в этом случае, сначала попробуйте взглянуть на шаблоны, связанные с WooCommerce… Затем в cart/cart-shipping.php файле шаблона вы найдете в строке 40 отображение метки методов доставки с использованием функции wc_cart_totals_shipping_method_label()… Затем при поиске этой функции вы упадете здесь и в его исходном коде, чтобы использовать подходящий фильтр. - person LoicTheAztec; 16.05.2020