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

#php #wordpress #woocommerce #checkout #shipping-method

#php #wordpress #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;
}
 

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

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

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

Ответ №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 );