2011-11-24 71 views
0

我对设计的WordPress的表中显示的管理仪表板的用户列表的WordPress的仪表板插件工作。WordPress的PHP阵列过滤掉用户

一切正常,除了所有的注册用户都显示在阵列中时,我只需要用户的事实。我创建与下面的代码阵列..

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 '</pre>'; 

通过使用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

用户角色存储作为meta_value序列化阵列数据,使事情过于复杂。

为什么不使用内置WP_User_Query类的WordPress做的工作适合你? 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();