#php #wordpress #redirect #woocommerce #checkout
#php #wordpress #перенаправление #woocommerce #Оформить покупку
Вопрос:
Мой код работает должным образом, но он не должен перенаправлять пользователя при входе на страницу оформления заказа.
Я использовал is_checkout()
, чтобы попытаться обнаружить это, но это работает не так, как ожидалось.
add_filter( 'woocommerce_login_redirect', 'bbloomer_customer_login_redirect', 9999, 2 );
function bbloomer_customer_login_redirect( $redirect ) {
if ( is_checkout() ) {
return '/checkout';
} else {
$redirect = '/my-account'; // custom URL same site
return $redirect;
}
}
// define the woocommerce_registration_redirect callback
function filter_woocommerce_registration_redirect( $redirect ) {
$redirect = '/my-account'; // custom URL same site
return $redirect;
}
// add the filter
add_filter( 'woocommerce_registration_redirect', 'filter_woocommerce_registration_redirect', 9999, 2 );
Ответ №1:
Этого должно быть достаточно
function filter_woocommerce_login_redirect( $redirect, $user ) {
// Checkout
if ( $redirect == wc_get_checkout_url() ) {
$redirect = '/checkout';
} else {
// Get the "My account" url
$redirect = get_permalink( wc_get_page_id( 'myaccount' ) );
}
return $redirect;
}
add_filter( 'woocommerce_login_redirect', 'filter_woocommerce_login_redirect', 10, 2 );
function filter_woocommerce_registration_redirect( $redirect ) {
// Get the "My account" url
$redirect = get_permalink( wc_get_page_id( 'myaccount' ) );
return $redirect;
}
add_filter( 'woocommerce_registration_redirect', 'filter_woocommerce_registration_redirect', 10, 1 );
Комментарии:
1. Это не работает. Перенаправляет на белую страницу с тем же URL, на котором пользователь уже был. Проблема с моим кодом if ( is_checkout()) — по какой-то причине он не может определить, что он уже находится на странице оформления заказа.
2.
$redirect == wc_get_checkout_url()
будет true, если вы находитесь на странице оформления заказа, так что вы могли бы использовать это вместоis_checkout()
. Что вы имеете в виду под «не перенаправлять» ? после входа вы все еще остаетесь на той же странице (оформления заказа), разве это не намерение? как уже применялось в вашем исходном коде