使用wpdb获取用户名字的正确方法

时间:2015-10-02 作者:Max Pekerman

我想使用$wpdb获取用户的名字。我知道如何使用php和mysql查询,但我想使用$wpdb。

问题是我不知道如何使用它。我试图创建一个简单的查询,以按user\\u id显示user first\\u name,然后进行回显。这就是我的结局:

$mywpdb1 = $wpdb->get_var( 
    $wpdb->prepare( 
        "SELECT first_name 
        FROM $wpdb->usermeta 
        WHERE user_id = 2", 
        $user->first_name
    ) 
); 
echo $mywpdb1;

2 个回复
SO网友:Paul

You should\'nt really be use wp query here,useget_user_meta();

示例:

$first_name = get_user_meta(2, \'first_name\', true);

SO网友:cybmeta

如果要对进行直接数据库查询first_name 元字段正确的方式是:

global $wpdb;

$user_id = 2;
$meta_key = "first_name";

$first_name = $wpdb->get_var( 
    $wpdb->prepare( 
        "SELECT meta_value 
        FROM $wpdb->usermeta 
        WHERE user_id = %d 
        AND meta_key = %s",
        $user_id,
        $meta_key
    ) 
);

echo $first_name;
但我认为使用WP_User 对象,其中包含first_name 元字段作为公共属性:

// Get the user with ID = 2
$user = new WP_User( 2 );

// Grab de the first_name
$first_name = $user->first_name;
您可以使用get_user_meta() 正如@PaulH所建议的那样,功能还包括:

$first_name = get_user_meta(2, \'first_name\', true);
但我想WP_User 对象优于get_user_meta() 对于这种特殊情况,主要原因如下:

通常,在使用用户时,无论如何都必须加载用户对象。例如,在问题的描述中,用户对象已经加载,因此there is no need for anything else, 仅使用$user->first_name.get_user_meta() 工程(at the end it uses this function), 它加载所有用户元字段,即使您只需要一个字段。其性能可能比加载WP_User 在某些情况下

相关推荐

如何像使用wpdb一样使用MySQL?

根据标题,我需要使用LIKE操作符以编程方式使用$wpdb删除db上的一行。我想使用$wpdb->delete 消除发生的情况,但我不知道如何设置LIKE 操作员,因为在WHERE 它需要一个指定单个值或另一个数组的数组。我问你这个语法是否正确。$wpdb->delete(\'wp_posts\', array(\'post_type\' => \'flamingo_inbound\', \'post_content\' => \'%\'.$mail.\'%\'));提前感谢