在用户页中排除特定角色的用户

时间:2013-06-06 作者:Godwinh
class MyPlugin {

    public function __construct() {
        add_action(\'init\', array(&$this, \'do_member_filter\'));
    }

    public function do_member_filter() {
        $users = new WP_User_Query( array(
            \'meta_query\' => array(
                array(
                    \'key\'     => "{$GLOBALS[\'wpdb\']->prefix}capabilities",
                    \'value\'   => \'abcrole\',
                    \'compare\' => \'!=\'
                )
            )
        ));


        do_action_ref_array(\'pre_user_query\', $users);
    }
}
1 个回复
SO网友:kaiser

如何使用回调中的类方法$query 内部对象pre_user_query 是完全合格的核心object, 所以你可以使用$query->set( \'key\', \'value\' ); 以及$query->get( \'key\' );.

如果您发现这可能会干扰其他回调,那么只需添加remove_filter( current_filter(), __FUNCTION__ ); 以使其在第一次调用时自动删除。

另一种方法是,在实例化类时,也可以直接使用这些参数:

$users = new WP_User_Query( array(
    \'meta_query\' => array(
        \'relation\'    => \'OR\',
        array(
            \'key\'     => "{$GLOBALS[\'wpdb\']->prefix}capabilities",
            \'value\'   => \'abcrole\',
            \'compare\' => \'!=\'
        ),
        array(
            \'key\'     => "{$GLOBALS[\'wpdb\']->prefix}capabilities",
            \'value\'   => \'ab\',
            \'compare\' => \'NOT LIKE\'
        )
    )
) );
此示例显示了如何通过capabilityrole 完全匹配或仅命名LIKE 要排除的角色。例如,当您为某些角色或功能添加前缀,然后希望将其大规模排除时,这会很方便。

您也可以在回调中使用相同的函数。注意使用array( array() ) 用于元查询。

结束

相关推荐