注册后 Woocommerce 重定向

Posted

技术标签:

【中文标题】注册后 Woocommerce 重定向【英文标题】:Woocommerce redirect after registration 【发布时间】:2015-07-31 22:50:06 【问题描述】:

我正在尝试在 Woocommerce 注册后重定向用户。我已经尝试了一切,但它不起作用。

我尝试了一些在互联网上找到的方法,但它们没有奏效......

当我将“我的帐户”更改为另一个永久链接时,它会在您单击注册时冻结。不知道为什么。

wp_safe_redirect( apply_filters( 'woocommerce_registration_redirect', wp_get_referer() ? wp_get_referer() : wc_get_page_permalink( 'welcome' ) ) 

我什至尝试过使用页面 ID

wp_safe_redirect( apply_filters( 'woocommerce_registration_redirect', wp_get_referer() ? wp_get_referer() : wc_get_page_permalink( '1072' ) ) 

有什么帮助吗?

【问题讨论】:

【参考方案1】:

重要更新(在最新版本 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 文件中...


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' ) ); 通过 ID 获取其他帖子或页面:$redirection_url = get_permalink( $post_id );(其中$post_id 是帖子或页面的 ID) 通过路径获取帖子或页面(示例)$redirection_url = home_url('/product/ninja/');

【讨论】:

谢谢你,搜索了一整天,这是我见过的最好的解决方案!【参考方案2】:

接受的答案对我不起作用。对我有用的是:

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

【讨论】:

如果您停用 Woocommerce,这将失败 注册后为什么要注销用户? @claytronicon 我们当时需要实现一个审批机制。用户需要先获得批准才能登录。 wp_logout()创建后直接删除了用户会话。 似乎重定向在指向家庭域以外的域时不起作用,即使指向它的子域也是如此。回退到我的帐户/【参考方案3】:

你想使用这样的过滤器:

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

【讨论】:

【参考方案4】:

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”

【讨论】:

【参考方案5】:

在主题函数文件中添加这个过滤器。

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

【讨论】:

【参考方案6】:

如果有人正在寻找适用于 woocommerce my-account 登录的登录重定向版本:


add_filter('woocommerce_login_redirect', 'hs_login_redirect');
function hs_login_redirect( $redirection_url ) 
    $redirection_url = get_home_url();
    return $redirection_url;

【讨论】:

以上是关于注册后 Woocommerce 重定向的主要内容,如果未能解决你的问题,请参考以下文章

登录重定向后的woocommerce

php 添加到购物车后,WooCommerce重定向

从 Paypal 重定向回来后,Wordpress + WooCommerce 中的会话不一致

Woocommerce 如何从模板重定向挂钩中排除 myaccount 的子页面(端点)?

Woocommerce 如何在我的帐户页面上重定向自定义端点

WooCommerce 添加到购物车重定向到以前的 URL