Woocommerce / Wordpress - 重定向用户登录主页

时间:2012-08-14 18:22:24

标签: wordpress redirect login widget woocommerce

我已经搜索了这个问题的答案,使用了插件但仍然无效。 我希望我的网站用户在登录/注册后重定向到主页。

目前,用户登录并重定向到我的帐户页面。

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,它无效。

思想?

8 个答案:

答案 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中)。以下是过滤器的链接以及在注册表单上处理此问题的一些说明。

https://github.com/woothemes/woocommerce/commit/014e31952828377bf7a1ebf4e812a43d0bcefa67#commitcomment-3351995

答案 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的拉取请求提出来,因为我认为它应该被过滤。

https://github.com/woothemes/woocommerce/pull/2508