Wordpress login_redirect 过滤器被忽略并且没有效果

Posted

技术标签:

【中文标题】Wordpress login_redirect 过滤器被忽略并且没有效果【英文标题】:Wordpress login_redirect filter gets ignored and has no effect 【发布时间】:2012-09-21 07:23:51 【问题描述】:

我试图在用户登录时将具有特定元标记的用户发送到特殊页面。我知道 $current_user 全局可能不可用,但过滤器将用户作为参数传递,所以我想什么我正在做的应该工作:

//special login redirect for employers
function employer_login_redirect($redirect_url, $request_url, $user) 
    $user;
    $is_employer = get_user_meta($user->ID, 'is_employer', true);
    var_dump($is_employer);
    if ($is_employer) 
        return get_bloginfo('url') . "/candidate-ranks/";
     else 
        return $redirect_url;
    

add_filter( 'login_redirect', 'employer_login_redirect', 90, 3 ); //late priority just in case other plugins are interfering

我错过了什么吗?我什至无法显示 var_dumpt,这让我觉得回调函数甚至没有被触发。

【问题讨论】:

【参考方案1】:

看起来不错,但我认为您应该使用site_url(),因为get_bloginfo('url') 返回 home_url 而不是 site_url。这可能是个问题。

function employer_login_redirect($redirect_url, $request_url, $user) 
    $is_employer = get_user_meta($user->ID, 'is_employer', true);
    if ($is_employer) 
        return site_url() . "/candidate-ranks/";
     else 
        return $redirect_url;
    

add_filter( 'login_redirect', 'employer_login_redirect', 90, 3 );

【讨论】:

我一定会试一试的。但我担心过滤器根本不起作用,因为 var_dump() 没有出现。无论重定向 URL 是什么,我都应该期望看到吗? 登录后你会看到什么,并通过在返回之前将var_dump($is_employer);exit 放在该函数中来确保它是否被调用。 我添加了 ...exit;什么也没有发生。像往常一样,我只是得到主页。过滤器一定不起作用,但我不明白为什么。 尝试将priority 更改为10 看看会发生什么? Also check the manual.

以上是关于Wordpress login_redirect 过滤器被忽略并且没有效果的主要内容,如果未能解决你的问题,请参考以下文章

wordpress教程 wordpress建站教程

wordpress 评价|wordpress 好用吗?完整评价与介绍

wordpress怎样安装主题

什么是WordPress?

wordpress是啥

如何安装Wordpress