如果我这样做,我会显示许多属性,包括display_name,但不显示名字和姓氏
$user = get_userdata( 4 );
print_r( $user );
然而,他们显然存在,因为如果我立即这样做,我会显示正确的姓氏。 Wordpress文档还提到last_name为属性。
echo $user->last_name;
那为什么print_r没有显示所有属性?这使得能够使用print_r来发现信息产生了很多疑问。
答案 0 :(得分:3)
last_name
不是WP_User
的真正属性,但它可通过魔术方法提供,以实现向后兼容。
它被列为公共财产in the docs,但这有点误导。更准确地说,您可以访问它作为公共财产。但是当你看the code时,它会被魔术方法检索和设置。
这里是最相关代码的摘录,显示了Wordpress如何在一个名为{{1}的私有静态属性中实际保存这些向后兼容属性的列表,包括last_name
。 }。当用户请求其中一个属性时,将调用魔术方法back_compat_keys
。魔术方法使用__get
来实际检索该属性的数据。换句话说,数据实际上并不存储在get_user_meta()
对象中; Wordpress只是让你假装它是,它只在明确请求时才提取它。这是代码:
WP_User