“祖先”POST对象属性在哪里?

时间:2016-03-22 作者:Capiedge

我通常和ancestors post对象的属性:

if ( in_array( $target_id, $post->ancestors ) ) {
  // do whatever
}
但在调试post对象时,我发现没有它的痕迹。

有人能帮我理解发生这种情况的原因吗?

1 个回复
最合适的回答,由SO网友:Rarst 整理而成

转储对象时看不到它的原因是因为它不是实际的对象属性。

WP_Post 实施魔法__get() 的方法ancestors 还有几把这样的钥匙。当您访问$post->ancestors() 您实际得到的不是对象的某个值,而是get_post_ancestors() 对其执行的函数。

简而言之,这就像一个虚拟的API快捷方式。

相关推荐

WooCommerce:Pre_Get_Posts中的复杂查询

我想在获取产品时添加一个复杂的过滤。我有一些产品,其中一些链接到自定义帖子类型</此自定义帖子类型有一个转发器字段根据cookie的不同,我应该只获取在此转发器字段中具有该值的产品,我知道我可以使用:add_filter( \'pre_get_posts\', \'fwp_archive_per_page\' ); 我知道我可以像这样设置额外的元查询:$query->set( \'meta_query\', array( \'relation\' => \'