从用户列表中排除订阅者用户

时间:2013-11-14 作者:Mark

我想从用户列表中排除订阅者。我的代码是:

$users = $wpdb->get_results( "SELECT display_name FROM $wpdb->users ORDER BY display_name ASC" );
如何更改此选项,以便从列表中排除订阅者?

我还查看了codex中的get\\u users函数,但它没有按角色排除参数。

编辑:或者另一种方法是获得按功能筛选的结果(订阅者没有)。

3 个回复
SO网友:Howdy_McGee

这种新方法应该有效。它查看所有功能值以查找“订阅者”,并将其隐藏。

尝试此查询

$wpdb->get_results(
    "SELECT display_name 
    FROM $wpdb->users WHERE 1=1 AND {$wpdb->users}.ID IN (
        SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta 
        WHERE {$wpdb->usermeta}.meta_key = \'{$wpdb->prefix}capabilities\'
        AND {$wpdb->usermeta}.meta_value NOT LIKE \'%subscriber%\') ORDER BY display_name ASC" 
);

SO网友:Maruti Mohanty

您可以使用get_users() 函数两次以排除subscribers.

你可以这样做

// Gets all the subscribers
$user_query = get_users( array( \'role\' => \'subscriber\' ) );
// This gets the array of ids of the subscribers
$subscribers_id = wp_list_pluck( $user_query, \'ID\' );
// Now use the exclude parameter to exclude the subscribers
$non_subscribers = get_users( array( \'exclude\' => $subscribers_id ) );
$non_subscribers 包含非订阅服务器。

您可以获取display_name 通过这样做

foreach( $non_subscribers as $non_subscriber ) {
    echo $non_subscriber->display_name;
}

SO网友:Dev

$args = array(
    \'role__not_in\' => \'subscriber\'
);

// The Query
$user_query = new WP_User_Query( $args );

// User Loop
if ( ! empty( $user_query->results ) ) {
    foreach ( $user_query->results as $user ) {
        echo \'<p>\' . $user->display_name . \'</p>\';
    }
} else {
    echo \'No users found.\';
}
怎么样WP_User_Query 参数中的角色为“\\uu not\\u”。

结束

相关推荐

我无法访问$wpdb

我正在开发一些附加功能,包括jQuery自动完成表单、一些自定义数据库表和用于查询表的PHP。我让它在WordPress框架之外工作,使用mysqli作为数据库部分。我已经将表单添加到WordPress页面(并将jQuery引用添加到标题)。当我运行Firefox Web Developer Web控制台时,我可以看到jQuery正在完成它的工作,直到调用PHP脚本为止。我的PHP脚本位于Genesis子主题的根目录中。PHP脚本就挂在那里,我似乎无法访问中的信息$wpdb. 我在与测试相同的目录中执行