繁体   English   中英

WordPress:使用get_user_meta()时对usermeta数据进行排序

[英]Wordpress: Sort usermeta data when using get_user_meta()

我已将$table_name_employee定义$table_name_employee插件中的一个表,其中包含大量用户信息。 ID字段镜像wp_users的字段

话虽如此,我有这段代码...

$SQLQuery="select * from {$table_name_employee}";
$wpdb->query($SQLQuery);
$results=$wpdb->get_results($SQLQuery,ARRAY_A);

foreach($results as $result)
{
    $all_meta_for_user = get_user_meta( $result['ID'] );
    $last_name = $all_meta_for_user['last_name'][0];
    $first_name = $all_meta_for_user['first_name'][0];
    $doc_training_responsibility_option.= "\t<option value='{$result['ID']}'>{$last_name}, {$first_name}</option>\n";
}

稍后在我的代码中,我使用$doc_training_responsibility_option<select>内输出<option> <select>

它按预期工作; 但是,结果未排序。 我尝试了几种方法将数据添加到数组中,而不是立即定义$doc_training_responsibility_option 我的意图是按姓氏对数组进行排序,然后将该数组输出到$doc_training_responsibility_option但每次尝试均失败。

****更新****

我的尝试在下面...

$SQLQuery="select * from {$table_name_employee}";
$wpdb->query($SQLQuery);
$results=$wpdb->get_results($SQLQuery,ARRAY_A);

$r=array(); $i=0;
foreach($results as $result)
{
    $all_meta_for_user = get_user_meta( $result['ID'] );
    $r[$i]['ID']=$result['ID'];
    $r[$i]['last_name']=$all_meta_for_user['last_name'][0];
    $r[$i]['first_name']=$all_meta_for_user['first_name'][0];
    $i++;
}

// ************************************************
// NOT SURE WHAT TO DO HERE TO SORT $r BY last_name
// ************************************************

foreach ($r as $result)
{
    $doc_training_responsibility_option.= "\t<option value='{$result['ID']}'>{$result['last_name']}, {$result['first_name']}</option>\n";
}

现在,您将在此变量中获取用户ID:

$result['ID']

现在,您需要从wp_usermeta获取所有用户wp_usermeta排序。

因此,您需要使用get用户来完成您的任务。

$u = get_users(array('blog_id' => $GLOBALS['blog_id'], 'meta_key' => 'last_name', 'orderby' => 'meta_value'));

foreach ($u as $user) {
            $n = get_user_meta( $user->ID, 'last_name', true );
            echo "<option>";
            echo $n;
            echo "</option>";
        }

基于@Mauro注释,我创建了下面的代码。

// Create list of plugin users
$SQLQuery="select ID from {$table_name_employee}";
$wpdb->query($SQLQuery);
$results=$wpdb->get_results($SQLQuery,ARRAY_A);

foreach($results as $result)
{
    $plugin_user[]=$result[ID];
}


// Get list of WP users (sorted)
$u = get_users(array('blog_id' => $GLOBALS['blog_id'], 'meta_key' => 'last_name', 'orderby' => 'meta_value'));

foreach ($u as $user)
{
    // See if WP user is also a plugin user
    if(in_array($user->ID,$plugin_user) )
    {
        $all_meta_for_user = get_user_meta( $user->ID );
        $last_name=$all_meta_for_user['last_name'][0];
        $first_name=$all_meta_for_user['first_name'][0];

        $doc_training_responsibility_option.= "\t<option value='{$user->ID}'>{$last_name}, {$first_name}</option>\n";
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM