Wordpress:使用get_user_meta()

时间:2015-05-06 00:16:27

标签: php wordpress

我已将$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<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";
}

2 个答案:

答案 0 :(得分:0)

现在您正在获取此变量中的用户ID:

$result['ID']

现在您需要从wp_usermeta获取所有用户并按姓氏排序。

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

$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>";
        }

答案 1 :(得分:0)

基于@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";
    }
}