WordPress:在插件中覆盖可插入函数的麻烦

时间:2016-05-06 16:30:46

标签: php wordpress

我在第一个插件中覆盖is_user_logged_in()可插入功能时遇到问题。 pluggable.php中的这个函数包含在if ( !function_exists('...') )中,所以我希望我的函数版本可以毫无问题地执行,但似乎并非如此。

new session_auth();

class session_auth{

    public $sessionUSERNAME; // php session variable for username

    public function __construct() {

        $this->sessionUSERNAME = $_SESSION['simple_auth']['username']; // php session variable for username

        add_filter('is_user_logged_in', array($this, 'is_user_logged_in'), 20);
        add_filter('wp_title', array($this, 'wp_title'), 20) ;

    }

    function is_user_logged_in() {
        return true;
    }

    public function wp_title($title)
    {
        return $title .'if this is displayed, the plugin is activated';
    }

}

我的wp_title版本已成功执行,而不是WordPress的版本,但不是我的is_user_logged_in版本。我没有收到任何错误。

我在这个剧本中做错了什么?

1 个答案:

答案 0 :(得分:1)

filter没有is_user_logged_in,可以从Wordpress pluggable.php代码中看到:

function is_user_logged_in() { $user = wp_get_current_user(); return $user->exists(); }

您需要在文件中创建is_user_logged_in()函数,而不是将其放在类中。所以,只需将某个地方放在你的插件中(再次,不在课堂内):

function is_user_logged_in() {
    return true;
}