Измените метку способа доставки WooCommerce только на странице оформления заказа

Я пытаюсь изменить метку переключателя только на странице оформления заказа, а не на странице корзины. Этикетка присутствует на обеих страницах.

Когда я ввожу приведенный ниже код, он меняет метку на странице оформления заказа, но делает страницу корзины пустой.

add_filter( 'woocommerce_cart_shipping_method_full_label', 'change_shipping_label', 10, 2 );
function change_shipping_label( $full_label, $method ){
    if( ! is_checkout()) return; // Only on checkout page?

    $full_label = str_replace( "Custom Carrier (Enter Details Next Page)", "Custom Carrier", $full_label );

    return $full_label;
}

Страница оформления заказа (правильное изменение ярлыка

Страница корзины (все ярлыки удалены

Кто-нибудь знает, почему это так?


person dancer    schedule 16.01.2021    source источник


Ответы (1)


Фактически вы ничего не возвращаете, потому что вы используете только return;. Хотя должно быть return $label;

  • is_checkout() - возвращает true на странице оформления заказа.
  • str_replace - заменить все вхождения строки поиска строкой замены

Итак, вы получаете:

function filter_woocommerce_cart_shipping_method_full_label( $label, $method ) {
    // NOT returns true on the checkout page.
    if ( ! is_checkout() )
        return $label;

    $label = str_replace( "Custom Carrier (Enter Details Next Page)", "Custom Carrier", $label );

    return $label;
}
add_filter( 'woocommerce_cart_shipping_method_full_label', 'filter_woocommerce_cart_shipping_method_full_label', 10, 2 );
person 7uc1f3r    schedule 16.01.2021