我有一个支持产品评论的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;
}
完全未测试。所以请让我知道输出。