WordPress:使用GET_USER_META()时对USERMETA数据进行排序



我将 $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>

它可以按预期工作;但是,结果尚未分类。我尝试了几种方法将数据添加到数组中,而不是立即定义$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获取所有用户并按姓氏订购。

因此,您需要使用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";
    }
}

相关内容

最新更新