我正在使用插件WP成员。我的WordPress首页是WP成员的登录页面。
在我的主题函数中。php我使用这个WP成员过滤器和函数在成员登录后将其重定向到帖子页面。
add_filter( \'wpmem_login_redirect\', \'my_login_redirect\' );
function my_login_redirect()
{
// return the url that the login should redirect to
return \'http://example.com/specials/\';
}
这是按设计进行的。但是,当有人返回站点并且已经从以前的会话登录时,此重定向不会检测到他们的登录状态并重定向他们。我假设是因为在有人登录之前不会调用该函数。
我对编程很有经验,但对WordPress的工作还不熟悉。我还没有找到任何关于如何解决这一问题的信息,尽管我强烈怀疑这是真的。有人能帮我指出正确的方向吗?
我提前感谢大家的帮助和指导。
非常感谢。
最合适的回答,由SO网友:butlerblog 整理而成
我假设是因为在有人登录之前不会调用该函数。
这是正确的。wpmem_login_redirect
是用户实际登录时发生的筛选器。如果他们正在访问该站点,并且由于具有有效的cookie而处于登录状态,则不会重定向他们。
从用户体验的角度来看,即使某人处于登录状态,在某人返回时重定向也不是很好的方式。同样,您将很难找到一种方法,而不仅仅是重定向它们,无论它们是返回还是浏览站点。
要用于重定向的函数是wp_redirect(). 您可以将其附加到任何信息发送到下游浏览器(如init)之前发生的某些操作,并测试这些信息是否已登录:
add_action( \'init\', \'my_redirect\' );
function my_redirect(){
if( is_user_logged_in() ) {
wp_redirect( \'http://somedomain.com/some-page\' );
exit();
}
}
正如我所说,这并不能区分用户是刚刚出现,还是从一个页面转到另一个页面,所以要使这实际上有用而不令人讨厌,您需要添加一些确定这一点并相应采取行动的过程。