我已经搜索了这个问题的答案,使用了插件但仍然无效。 我希望我的网站用户在登录/注册后重定向到主页。
目前,用户登录并重定向到我的帐户页面。
Woocommerce提供此代码,但它无法为我工作:
/*
* goes in theme functions.php or a custom plugin
*
* By default login goes to my account
**/
add_filter('woocommerce_login_widget_redirect', 'custom_login_redirect');
function custom_login_redirect( $redirect_to ) {
$redirect_to = 'http://anypage.com';
}
我也试图使用Peter的Redirect插件,但由于woocommerce绕过了wp-login.php,它无效。
思想?
答案 0 :(得分:4)
您可以下载http://wordpress.org/extend/plugins/peters-login-redirect/并将其替换为widget-login.php
<input type="hidden" name="redirect_to" class="redirect_to" value="<?php echo $redirect_to; ?>
与
<input type="hidden" name="redirect_to" class="redirect_to" value="<?php echo site_url('/wp-content/plugins/peters-login-redirect/wplogin_redirect_control.php/'); ?>" />
通过这种方式,您可以使用peters登录重定向来全局重定向以及使用woocommerce登录窗口小部件的特定用户。
确保更改“使用外部重定向文件。如果您使用Gigya这样的插件绕过常规WordPress重定向进程(并且只允许一个固定的重定向URL),请将其设置为”是“。然后,设置重定向设置为“是”的%s“URL”。
希望这有帮助。
答案 1 :(得分:4)
在functions.php上使用此代码
add_filter('woocommerce_login_redirect', 'wc_login_redirect');
function wc_login_redirect( $redirect_to ) {
$redirect_to = 'https://www.google.co.in/';
return $redirect_to;
}
答案 2 :(得分:2)
它们提供的修复只有在您使用登录小部件时才有效。登录主页后,您只需将用户重定向到登录表单即可:
<input type="hidden" name="redirect" value="<?php echo get_home_url(); ?>" />
答案 3 :(得分:0)
最近添加了一个过滤器,允许您在注册后重定向。在登录时进行重定向就像上面提到的Tomanow一样简单(将其放在form-login.php中)。以下是过滤器的链接以及在注册表单上处理此问题的一些说明。
答案 4 :(得分:0)
在functions.php上使用此代码
add_action('wp_logout','go_home');
function go_home(){
wp_redirect( home_url() );
exit();
}
答案 5 :(得分:0)
这样做:
转到管理员&gt; Woocommerce&gt;设置&gt;一般
在“购物车,结帐和帐户”下找到“客户帐户”
取消选中“阻止客户访问WordPress管理员”
保存更改并测试!
答案 6 :(得分:0)
您可以根据用户角色设置重定向。鉴于该重定向的代码,我已为入门级用户或技术或非程序员开发了WooCommerce Login or Register Redirect plugin。
//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 );
答案 7 :(得分:-1)
还包括使用wp-login.php的标准WordPress登录表单登录:
add_filter('login_redirect', 'custom_login_redirect');
我使用此过滤器和您给出的过滤器对应相同的过滤器功能,它捕获用户可以登录的两个位置(WP和WC)。
还注意到了明显的问题。您在过滤器功能中有这个:
$redirect_to = 'http://anypage.com';
但你需要这个:
return 'http://anypage.com';
$ return_url从之前的过滤器传入,因此您可以检查它并决定是否更改它。
编辑:
实际上,我需要纠正其中的一些问题。看起来woocommerce_login_widget_redirect过滤器用于在窗口小部件登录表单中设置重定向参数。这意味着它仅在用户未登录并且呈现窗口小部件登录表单时触发。它不能用于决定用户登录后的发送位置。
WP login_redirect过滤器在用户登录后触发,并且可以修改随登录表单发送的任何redirect_to URL,以便您将用户重定向到其他页面。
此外,WooCommerce登录窗口小部件不会处理您认为会执行的登录。登录过程通过woocommerce-ajax.php中的AJAX处理。您将在那里看到重定向URL未通过woocommerce_login_widget_redirect过滤器传递,因此无法修改。我将把它作为WooCommerce的拉取请求提出来,因为我认为它应该被过滤。