Я пытаюсь перенаправить пользователя после регистрации в Woocommerce. Я перепробовал все, и это не работает.
Я пробовал некоторые методы, найденные в Интернете, но они не работали …
Когда я меняю ‘myaccount’ на другую постоянную ссылку, он просто зависает, когда вы нажимаете зарегистрироваться. Не знаю почему.
wp_safe_redirect( apply_filters( 'woocommerce_registration_redirect', wp_get_referer() ? wp_get_referer() : wc_get_page_permalink( 'welcome' ) )
Я даже пытался с идентификатором страницы
wp_safe_redirect( apply_filters( 'woocommerce_registration_redirect', wp_get_referer() ? wp_get_referer() : wc_get_page_permalink( '1072' ) )
Любая помощь?
Принятый ответ не работает для меня. То, что работало для меня, было этим:
// After registration, logout the user and redirect to home page
function custom_registration_redirect() {
wp_logout();
return home_url('/');
}
add_action('woocommerce_registration_redirect', 'custom_registration_redirect', 2);
Важное обновление (работает с последней версией 3.2.x)
Сначала
woocommerce_registration_redirect
это крючок фильтра, но НЕ хук действия.Крючок фильтра всегда есть хотя бы один аргумент а также всегда требую что-то вернуть. Это может быть основной аргумент функции (первый) или какое-то пользовательское значение.
Правильный проверенный и функциональный код:
add_filter( 'woocommerce_registration_redirect', 'custom_redirection_after_registration', 10, 1 );
function custom_redirection_after_registration( $redirection_url ){
// Change the redirection Url
$redirection_url = get_home_url(); // Home page
return $redirection_url; // Always return something
}
Код помещается в файл function.php вашей активной дочерней темы (или темы) …
Некоторые общие URL-адреса перенаправлений, используемые в woocommerce:
$redirection_url = get_home_url();
$redirection_url = get_permalink( wc_get_page_id( 'shop' ) );
$redirection_url = wc_get_cart_url();
$redirection_url = wc_get_checkout_url();
$redirection_url = get_permalink( wc_get_page_id( 'myaccount' ) );
$redirection_url = get_permalink( $post_id );
$post_id
это идентификатор поста или страницы)$redirection_url = home_url('/product/ninja/');
Вы хотите использовать такой фильтр:
function plugin_registration_redirect() {
return home_url( '/page-to-show' );
}
add_filter( 'registration_redirect', 'plugin_registration_redirect' );
Или специально для вашего кода:
function plugin_registration_redirect() {
$url = wp_get_referer() ? wp_get_referer() : wc_get_page_permalink( 'welcome' );
return $url;
}
add_filter( 'registration_redirect', 'plugin_registration_redirect' );
WP WooCommerce Redirect — это плагин WordPress для перенаправления вашего сайта WooCommerce после регистрации или входа! Вы можете установить любую пользовательскую страницу или пользовательское перенаправление в соответствии с ролью пользователя.
Вы можете установить логин пользователя и зарегистрировать страницу перенаправления без каких-либо знаний кодирования на вашем сайте WooCommerce. Ваш клиент сократит время на использование этого плагина и легко получит место назначения.
Я разработал плагин для этой проблемы. Также приводится ниже сырой код для перенаправления без каких-либо плагинов.
//Redirect users to custom URL based on their role after login
function wp_woo_custom_redirect( $redirect, $user ) {
// Get the first of all the roles assigned to the user
$role = $user->roles[0];
$dashboard = admin_url();
$myaccount = get_permalink( wc_get_page_id( 'my-account' ) );
if( $role == 'administrator' ) {
//Redirect administrators to the dashboard
$admin_redirect = get_option('admin_redirect');
$redirect = $admin_redirect;
} elseif ( $role == 'shop-manager' ) {
//Redirect shop managers to the dashboard
$shop_manager_redirect = get_option('shop_manager_redirect');
$redirect = $shop_manager_redirect;
} elseif ( $role == 'customer' || $role == 'subscriber' ) {
//Redirect customers and subscribers to the "My Account" page
$customer_redirect = get_option('customer_redirect');
$redirect = $customer_redirect;
} else {
//Redirect any other role to the previous visited page or, if not available, to the home
$redirect = wp_get_referer() ? wp_get_referer() : home_url();
}
return $redirect;
}
add_filter( 'woocommerce_login_redirect', 'wp_woo_custom_redirect', 10, 2 );
Если вы чувствуете себя комфортно работать с плагином или без кода? Вы можете скачать и установить мой плагин «WP WooCommerce Redirect«
Добавьте этот фильтр в файл функции темы.
function filter_woocommerce_registration_redirect( $var ) {
// make filter magic happen here...
return get_page_link(3598); // 3598 id page id.
};
Добавьте фильтр:
add_filter( 'woocommerce_registration_redirect',
'filter_woocommerce_registration_redirect', 10, 1 );
Если кто-то ищет версию перенаправления входа, которая подходит для входа в мой аккаунт woocommerce:
add_filter('woocommerce_login_redirect', 'hs_login_redirect');
function hs_login_redirect( $redirection_url ) {
$redirection_url = get_home_url();
return $redirection_url;
}