【问题标题】:Wordpress PHP array filter out subscribersWordpress PHP 数组过滤掉订阅者
【发布时间】:2011-11-24 16:30:09
【问题描述】:

我正在开发一个 wordpress 仪表板插件,该插件旨在在 wordpress 表格的管理仪表板中显示订阅者列表。

当我只需要订阅者时,除了所有注册用户都显示在数组中之外,一切都正常工作。我正在使用以下代码创建数组..

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';
    }

但这对我不起作用,任何人都可以提出任何建议吗?

【问题讨论】:

    标签: php arrays wordpress array-filter


    【解决方案1】:

    用户的角色作为序列化数组数据存储在 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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-08
      • 2021-12-19
      • 2019-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多