#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 );