Wordpress PHP массив отфильтровывает подписчиков - PullRequest
0 голосов
/ 24 ноября 2011

Я работаю над плагином панели мониторинга WordPress, который предназначен для отображения списка подписчиков на панели администратора в таблице WordPress.

Все работает правильно, за исключением того, что все зарегистрированные пользователи отображаются вмассив, когда мне нужны только подписчики.Я создаю массив со следующим кодом ..

<code>function prepare_items() {
    $per_page = 5;
    $columns = $this->get_columns();        $hidden = array();        $sortable = $this->get_sortable_columns();
    $this->_column_headers = array($columns, $hidden, $sortable);

    global $wpdb;
    $data = $wpdb->get_results("SELECT * FROM $wpdb->users", ARRAY_A);  
    $i = 0;

    foreach($data as $single) {
    $meta = $wpdb->get_results(
    "SELECT meta_value
    FROM $wpdb->usermeta
    WHERE user_id = $single[ID]
    AND (meta_key = 'first_name' OR meta_key = 'last_name' OR meta_key = 'wp_user_level')
    ORDER BY meta_key",
    ARRAY_A
    );

    $data[$i]['first_name'] = $meta[0]['meta_value'];
    $data[$i]['last_name'] = $meta[1]['meta_value'];
    $data[$i]['wp_user_level'] = $meta[2]['meta_value'];
    $i++;
}

    echo '<pre>'; 
    print_r($data2); 
    echo '
';

Используя print_r, я вижу, что две таблицы wp_users и wp_usermeta правильно соединены и все необходимые мне данные возвращаются в массив.

Что мне теперь нужносделать, это использовать своего рода array_filter, чтобы вернуть только те записи, которые имеют wp_user_level 0 (подписчик).

Я пробовал следующее ....

$data = array_filter($data, 'filter_subscribers');

function filter_subscribers()
    {
        return $data2['wp_user_level'] == '0';
    }

Но это не работаетдля меня кто-нибудь может предложить что-нибудь?

1 Ответ

1 голос
/ 25 ноября 2011

Роли пользователя хранятся в виде данных сериализованного массива в meta_value, что усложняет задачу.

Почему бы не использовать встроенный в WordPress класс WP_User_Query для выполнения этой работы за вас? http://codex.wordpress.org/Class_Reference/WP_User_Query

$wp_user_search = new WP_User_Query( array( 'role' => 'subscriber' ) );
$subscribers = $wp_user_search->get_results();
...