筛选GET_USER_BY而不是REPLACE函数

时间:2015-12-05 作者:LPH

我开发了一个插件(尽管理解不多),它取代了可插入功能get_user_by 从另一个源提取用户数据。虽然这是可行的,但只要有一个新的WP版本更改了可插拔功能,就可以进行维护。我通过get\\u avatar了解到,最好是过滤而不是替换。

是否有过滤方法get_user_by 而不是替换它?

例如,像下面这样使用add\\u过滤器似乎不起作用。

Class XenWord_Login {

    public $visitor;
    public $user_id;
    public $current_user;

    public function __construct() {
        add_filter( \'get_user_by\', array( &$this, \'getUserData\' ) );
    }

    function getUserData() {

        $visitor = XenWord::getVisitor();
        $user_id = $visitor[\'user_id\'];
        $current_user = $visitor;

        $userdata = XenWord_XFUserData::xf_user_data( $visitor, $current_user,
        $user_id );

        if ( ! $userdata ) {
            return false;
        }

        $user = new WP_User;
        $user->init( $userdata );

        return $user;
    }
}

$login = new XenWord_Login();
以上只是尝试过滤而不是替换的测试代码。有更好的方法吗?

1 个回复
SO网友:s_ha_dum

如果你看看来源get_user_by() 只不过是WP_User 对象您可以看到,它使用了“get\\u data\\u by()`”方法:

$userdata = WP_User::get_data_by( $field, $value );
以及init:

$user = new WP_User;
$user->init( $userdata );

Neither offer any filters.

Nor does the cache object used by get_data_by()

我看不到一种不替换该功能的方法。也许有人能发现我不知道的东西。

相关推荐