如何获取所有用户及其元数据的列表

时间:2016-06-29 作者:Hermants

如何获取角色为“Customers”的所有用户的列表,包括每个用户的所有元数据,表示wp\\u users+wp\\u usermeta。

下面的查询不会生成所需的结果。

    $query = "SELECT * FROM wp_users INNER JOIN wp_usermeta ON wp_users.ID = wp_usermeta.user_id ORDER BY ID DESC\');  ";

    $data = $wpdb->get_results($query,ARRAY_A);
但这个列表并不正确。它显示每个用户x次,这取决于wp\\u usermeta中的行数。

我如何过滤它?每个用户在每个记录中显示其所有用户+元数据?

仍在搜索6个小时。

4 个回复
最合适的回答,由SO网友:Syed Fakhar Abbas 整理而成

我认为你应该使用wp-api函数,它可以为你做任何事情。

 
$users = get_users( array( \'fields\' => array( \'ID\' ) ) );
foreach($users as $user){
        print_r(get_user_meta ( $user->ID));
    }

SO网友:Debbie Kurth

实现相同结果的更正式的方法如下所示,根据需要替换任何角色,此代码假设您正在使用woocommerce获取更多详细信息。

function GetSubscriberUserData()
{
$DBRecord = array();
$args = array(
    \'role\'    => \'Subscriber\',
    \'orderby\' => \'last_name\',
    \'order\'   => \'ASC\'
);
$users = get_users( $args );
$i=0;
foreach ( $users as $user )
  {
  $DBRecord[$i][\'role\']           = "Subscriber";   
  $DBRecord[$i][\'WPId\']           = $user->ID;  
  $DBRecord[$i][\'FirstName\']      = $user->first_name;
  $DBRecord[$i][\'LastName\']       = $user->last_name;
  $DBRecord[$i][\'RegisteredDate\'] = $user->user_registered;
  $DBRecord[$i][\'Email\']          = $user->user_email;

  $UserData                      = get_user_meta( $user->ID );  
  $DBRecord[$i][\'Company\']        = $UserData[\'billing_company\'][0];    
  $DBRecord[$i][\'Address\']        = $UserData[\'billing_address_1\'][0];
  $DBRecord[$i][\'City\']           = $UserData[\'billing_city\'][0];
  $DBRecord[$i][\'State\']          = $UserData[\'billing_state\'][0];
  $DBRecord[$i][\'PostCode\']       = $UserData[\'billing_postcode\'][0];
  $DBRecord[$i][\'Country\']        = $UserData[\'billing_country\'][0];
  $DBRecord[$i][\'Phone\']          = $UserData[\'billing_phone\'][0];
  i++;
  }
return DBRecord;
}

SO网友:Tim Burch

我创建了一个简单的免费插件,名为Flat Meta Data, 这将post和用户元数据扁平化为CSV,可以更轻松地用于报告和分析。在此过程中,它会在数据库中创建表([:prefix]postmeta_flat[:prefix]usermeta_flat) 包含相同信息并可用于更复杂的查询。这些表每个帖子或用户有一行,每个数据点(meta\\u键)有一列,其中包含meta值(meta\\u值)。

安装并激活插件(在wp内容/插件/平面表中)后,可以通过管理面板主菜单中的链接访问该插件,该链接称为平面元数据。然后,您可以单击;下载post元数据“;或“或”;下载用户元数据“;按钮生成表格并下载包含电子表格形式的所有数据的CSV。

注意事项:

此插件免费提供。使用风险自负

SO网友:user8604345

   $members = get_users(
                       array(\'role\'    => \'company\',
                             \'orderby\' => \'ID\',
                             \'order\'   => \'ASC\'
                            )
                        );
   array_map( function($member ){
            $member->usermeta =  array_map(function($data){
                return reset($data);
            }, get_user_meta( $member->ID ) );
            return $member;
        }, $members);
这将返回如下数据

Array
(
    [0] => WP_User Object
        (
            [data] => stdClass Object
                (
                    [ID] => 20
                    [user_login] => aastha
                    [user_pass] => $P$BVmRgRiZyZWhMvGszAkquPKX0JjedF1
                    [user_nicename] => aastha
                    [user_email] => [email protected]
                    [user_url] => 
                    [user_registered] => 2021-11-29 10:43:21
                    [user_activation_key] => 
                    [user_status] => 0
                    [display_name] => aastha
                    [usermeta] => Array
                        (
                            [nickname] => aastha
                            [first_name] => 
                            [last_name] => 
                            [description] => 
                            [rich_editing] => true
                            [syntax_highlighting] => true
                            [comment_shortcuts] => false
                            [admin_color] => fresh
                            [use_ssl] => 0
                            [show_admin_bar_front] => true
                            [locale] => 
                            [wm_capabilities] => a:1:{s:7:"company";b:1;}
                            [wm_user_level] => 0
                            [name] => btc
                            [type] => 7
                            [status] => active
                            [company_age] => 10
                            [company_member] => 30
                            [address] => indoor
                            [city] => indoor
                            [pin] => 5454
                            [telephone] => 5434
                            [opening_time] => 09:00
                            [closing_time] => 20:00
                            [fax] => gfgf
                            [skull_from] => wednesday
                            [skull_to] => sunday
                            [mobile] => 3987665213
                            [overview] => ghgh
                            [username] => aastha
                            [email] => [email protected]
                            [wesite] => http://www.aastha.com
                            [skull_logo] => 
                        )

                )

            [ID] => 20
            [caps] => Array
                (
                    [company] => 1
                )

            [cap_key] => wm_capabilities
            [roles] => Array
                (
                    [0] => company
                )

            [allcaps] => Array
                (
                    [read] => 1
                    [level_0] => 1
                    [company] => 1
                )

            [filter] => 
            [site_id:WP_User:private] => 1
        )
);

相关推荐

添加用户角色:预先保存在User-Meta中[已解决]

我在用户注册后添加一个操作,以根据users meta\\u值添加另一个用户角色。使用时:add_action(\'um_after_save_registration_details\', \'custom_after_new_user_register\', 10, 2); function custom_after_new_user_register($user_id) { $user = get_user_by(\'id\', $user_id); if