- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
如果我这样做,我会显示许多属性,包括 display_name,但不会显示名字和姓氏
$user = get_userdata( 4 );
print_r( $user );
但是它们显然存在,因为如果我之后立即这样做,我会看到正确的姓氏。 Wordpress 文档还提到 last_name 是一个属性。
echo $user->last_name;
那么为什么 print_r 不显示所有属性呢?这对能否使用 print_r 发现信息产生了很大的疑问。
最佳答案
last_name
不是 WP_User
的真实属性,但为了向后兼容,它可以通过魔术方法使用。
它被列为公共(public)属性(property) in the docs ,但这有点误导。更准确地说,您可以将其作为公共(public)属性(property)访问。但是当你看the code ,它正在使用魔术方法进行检索和设置。
这里是最相关代码的摘录,展示了 Wordpress 实际上如何在名为 back_compat_keys
。当用户请求这些属性之一时,将调用魔法方法 __get
。魔术方法使用 get_user_meta()
实际检索该属性的数据。换句话说,数据实际上并未存储在 WP_User
对象中; Wordpress 只是让你假装它是,它只在明确请求时才获取它。这是代码:
<?php
class WP_User {
// ...
/**
* @static
* @since 3.3.0
* @access private
* @var array
*/
private static $back_compat_keys;
public function __construct( $id = 0, $name = '', $blog_id = '' ) {
if ( ! isset( self::$back_compat_keys ) ) {
$prefix = $GLOBALS['wpdb']->prefix;
self::$back_compat_keys = array(
'user_firstname' => 'first_name',
'user_lastname' => 'last_name',
'user_description' => 'description',
'user_level' => $prefix . 'user_level',
$prefix . 'usersettings' => $prefix . 'user-settings',
$prefix . 'usersettingstime' => $prefix . 'user-settings-time',
);
}
// ...
}
// ...
/**
* Magic method for accessing custom fields.
*
* @since 3.3.0
* @access public
*
* @param string $key User meta key to retrieve.
* @return mixed Value of the given user meta key (if set). If `$key` is 'id', the user ID.
*/
public function __get( $key ) {
// ...
if ( isset( $this->data->$key ) ) {
$value = $this->data->$key;
} else {
if ( isset( self::$back_compat_keys[ $key ] ) )
$key = self::$back_compat_keys[ $key ];
$value = get_user_meta( $this->ID, $key, true );
}
// ...
return $value;
}
/**
* Magic method for setting custom user fields.
*
* This method does not update custom fields in the database. It only stores
* the value on the WP_User instance.
*
* @since 3.3.0
* @access public
*
* @param string $key User meta key.
* @param mixed $value User meta value.
*/
public function __set( $key, $value ) {
if ( 'id' == $key ) {
_deprecated_argument( 'WP_User->id', '2.1.0',
sprintf(
/* translators: %s: WP_User->ID */
__( 'Use %s instead.' ),
'<code>WP_User->ID</code>'
)
);
$this->ID = $value;
return;
}
$this->data->$key = $value;
}
/**
* Magic method for unsetting a certain custom field.
*
* @since 4.4.0
* @access public
*
* @param string $key User meta key to unset.
*/
public function __unset( $key ) {
// ...
if ( isset( $this->data->$key ) ) {
unset( $this->data->$key );
}
if ( isset( self::$back_compat_keys[ $key ] ) ) {
unset( self::$back_compat_keys[ $key ] );
}
}
// ...
}
关于php - 为什么 print_r 不显示 WP_User 对象的所有属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47586038/
我正在使用 XAMPP 在 Mac (OSx Sierra) 上本地开发一个 WordPress 主题。它被设置为当我在 URL 中键入 localhost/ThemeName 时,我被带到我的站点。
在表 WP_USER 中添加新列是否好 - 或者 - 我应该在 metauser 表中添加内容吗?我在质疑这个,因为有一个 WP 功能 /* Get full WP_User object insta
正在脱机处理一个站点,突然出现 mysql 端口冲突错误,然后我不得不花很多时间研究它的解决方案,但没有运气。所以我从 xampp 手动获取主题文件和数据库,并将它们粘贴到另一个安装了新 xampp
在表 WP_USER 中添加新列是否好 - 或者 - 我应该在 metauser 表中添加内容吗?我在质疑这个,因为有一个 WP 功能 /* Get full WP_User object insta
我需要自定义数据,这就是为什么我在应用插入查询时创建了一个名为 company_name 的列,然后插入了所有数据,但未插入 company_name 数据。 下面是我的代码示例: $userdata
SELECT * FROM `wp_users` group by date(user_registered),month(user_registered) 表中有 4 条记录,但查询仅返回每个日
当用户注册时,数据将进入标准 wp_users 表。但我创建了一个新表,我想将所有(新)注册用户存储在其中。我怎样才能改变它? 最佳答案 add_action('user_register', 'my
我有一个代码示例: function custom_func(){ global $wpdb; $wpdb->flush(); //tried with and without
我使用网站的仪表板在 Wordpress 上创建了一个新用户。新用户已成功创建,我可以使用创建的用户登录。然而,当我检查网站使用的 MySQL 数据库时,我惊讶地发现 wp_user 表中没有新条目反
我无法登录到管理仪表板。当我转到 localhost/nutri/wp-admin 时,它会自动将我重定向到: http://localhost/nutri/wp-login.php?redirect
我正在编写一个基本插件。这是我的代码: $new_user = get_userdata($user_id); //$user_id is passed as a parameter $fir
我创建了一个简单的 html 表单来向我编写的 php 脚本提交一个值。我正在使用WordPress。我希望脚本在 user_meta 表中查找用户,然后选择用户 ID。然后我希望脚本在 wp_use
有没有办法从单独的 WordPress 安装中检索 WP_User 对象? 我正在尝试显示另一个 Wordpress 站点的用户列表。我不一定希望新的 WordPress 网站共享相同的用户,我只需要
我创建了一个简单的 html 表单,用于向我编写的 php 脚本提交两个值(车牌号和状态)。我正在使用 wordpress。我希望脚本在 wp_usermeta 表中查找用户,并选择具有与表单中提交的
我正在编写一个插件,它使用...从 WordPress 数据库中获取一组数据 $data = $wpdb->get_results("SELECT * FROM $wpdb->users", ARRA
我有一个自定义查询,可以使用我编写的统计插件的 user_meta 拉取用户。我可以根据日期范围选择 (WHERE),也可以按任何元字段进行排序,但是,我不能同时进行这两项操作。我快疯了!!这是我的查
如果我这样做,我会显示许多属性,包括 display_name,但不会显示名字和姓氏 $user = get_userdata( 4 ); print_r( $user ); 但是它们显然存在,因为如
这就是我能够将每个用户记录的所有相关数据提取到一行中的方法: SELECT user_login, user_pass, user_email, user_registered, meta1.meta
默认情况下,wordpress 会清理写入 wp_users 表中的 user_nicename 列的内容。它将删除空格、一些特殊字符并将大写字母更改为小写字母。是否可以在不进行清理的情况下更新 us
我们正在使用 WordPress 来开发您的网站。当 user_status=2 时,用户处于事件状态;当 user_status=0 时,用户处于非事件状态。那么user_status=1是什么意思
我是一名优秀的程序员,十分优秀!