我被要求在WordPress中实现自定义重定向。一开始看起来很简单,但我不知道怎么做才对。太多了,我甚至都不能开始。应该这样做:
用户登录,然后使用wp_login
挂钩如果满足特定条件,用户将使用wp_logout()
从wp\\u登录挂钩中,问题就出现在这里,用户应该被重定向到专用于他们的页面,而不破坏正常的注销功能,因此如果用户正常注销,他们会被重定向到默认页面,但是如果满足条件,他们会被重定向到另一个页面,仍然会被注销。
我试过了wp_logout
和wp_clear_auth_cookie
钩子,但没有用。我无法真正向您展示任何代码,因为我没有想出任何具体的方法。
编辑:
....
//in the login hook
if($condition)
wp_logout();
...
add_action("wp_login","login_hook",10,2);
//below the login hook
function logout(){
if($condition){
wp_redirect(home_url("/redirectTo"));
exit;
}
}
add_action("wp_logout","logout");
最合适的回答,由SO网友:s_ha_dum 整理而成
这个wp_logout()
函数为pluggable. 您应该能够编写自己的版本并“重载”核心功能:
function wp_logout() {
$lid = get_current_user_id();
wp_destroy_current_session();
wp_clear_auth_cookie();
do_action( \'wp_logout\' );
/**
* Fires after a user is logged-out.
*
* @since 1.5.0
*/
if (2 == $lid) {
wp_redirect(home_url("/redirectTo"));
exit;
}
}
SO网友:Bysander
挂接操作位于的第603行pluggable.php
根据codex链接。
add_action( $hook, $function_to_add, $priority, $accepted_args );
是您应该使用的格式,因此它可能看起来像:
add_action( \'wp_logout\' , \'logout_page\' );
function logout_page() {
// Work out your conditions
if($condition1) {
$page = *page*; // whatever page
} else if ($condition2) {
$page = *page*; // whatever page
}
header("Location: /$page");
}
我对注销挂钩没有做太多的工作,但除非函数已经输出了一些东西(在那个阶段似乎不太可能),否则标题应该会将您带到正确的页面。