WP_Post对象上的元数据

时间:2018-12-15 作者:That Brazilian Guy

我很难理解WP_Post 变量(和/或可能的行为var_dump 本身)。

据我所知,var_dump 将检查变量中的所有数据。从PHP文档中:

此函数显示有关一个或多个表达式的结构化信息,其中包括其类型和值。数组和对象使用缩进的值进行递归探索,以显示结构。

Then, why is it that var_dump($post) doesn\'t show metadata, whereas var_dump($post->metadata) does?

我已经阅读了官方文件,特别是this particular comment, 以及this answer. 我想解释就在那里,显而易见——然而,我仍然不清楚。

这是怎么回事?这是我不知道的一些基本PHP行为吗?(我不确定这个问题是不是因为我不了解WordPress是如何工作的,还是PHP是如何工作的。如果这个网站问错了,我很抱歉)。

1 个回复
SO网友:Frank P. Walentynowicz

这里面没有“魔法”,但有两种magic 方法WP_Post__isset(), 和__get().

你的extra_data 不是的属性WP_Post 类,所以首先var_dump 不包括它。

对不存在的属性的引用WP_Post 雇佣那些magic 方法检索post的元数据。

第一$post->__isset(\'extra_data\') 将执行,如果false 返回,然后$post->extra_data 将是空数组,否则$post->__get(\'extra_data\') 将运行,返回元数据。这就是为什么你的第二个var_dump 显示extra_data.

Note: 事实上,米洛对这个问题的第一个评论是完美的答案。

相关推荐

如何修复wp-login.php在迁移后出现错误500?

我已经将一个word press站点迁移到一个自托管linux服务器。我的首页和所有其他页面都加载了,但是图像仍然指向我的旧服务器。我的wp登录。php页面还提供了一个错误500。我已经使用mysql终端将数据库中的siteurl和home更改为我的新数据库。我还将PHP ini文件更改为512M如果我更改“wp\\u posts”表中的guid,我可以获得要显示的图像。编辑:enabling debug showed the following: Deprecated: Methods