更改wooccommerce产品评论登录链接


Change the woocommerce product review login link

我有一个支持产品评论的wooccommerce网站(产品评论使用wordpress评论系统)。当访问者未登录时,当前显示:

You must be logged in to post a comment.

logged in链接到默认的mysite.com/wp-login.php?redirect_to=myproduct-url。当访问者点击链接时,他们会被带到默认的wordpress登录页面。

然而,wooccommerce有自己的帐户登录/注册页面,我想将访问者重定向到该wooccommence页面。我还想保留自动?redirect_to=查询,这样用户登录后就可以重定向回原始产品页面

我知道我应该在主题的function.php中添加一个函数来修改默认的链接行为,但我应该使用哪个过滤器/操作?

[编辑]我发现了这个

add_filter( 'login_url', 'my_login_page', 10, 2 );
function my_login_page( $login_url, $redirect ) {
    return home_url( '/my-login-page/?redirect_to=' . $redirect );
}

http://codex.wordpress.org/Plugin_API/Filter_Reference/login_url

所以现在我可以修改登录链接以使用我的登录页面,这很好,但由于它现在使用的是wooccommerce登录,我发现wooccommence登录重定向到我的帐户页面,并且不尊重?redirect_to=myproduct-url

关于如何让wooccommerce登录以遵循?redirect_to=myproduct-url,有什么想法吗?

您可以通过以下代码实现:

add_filter( 'login_url', 'my_login_page', 10, 2 );
function my_login_page( $login_url, $redirect ) {
    return home_url( '/my-login-page/?redirect_to=' . $redirect );
}
add_filter('woocommerce_login_redirect', 'rohil_login_redirect');
function rohil_login_redirect( $redirected_to ) {
    $page_url   =   $_SERVER['REQUEST_URI']; //To get string from the URL
    $current_page_url = get_permalink(); //To get URL of the current page which is MY ACCOUNT
    $encoded_url = explode('redirect_to%3D', $page_url); //To get encoded URL 
    $decoded_url    =    rawurldecode($encoded_url[1]); //To get decoded URL
    $redirection_page = explode(home_url(), $decoded_url); //Redirection page
    $redirected_to = home_url().$redirection_page[1];
    return $redirected_to;
}

完全未测试。所以请让我知道输出。