setup_postdata($ post)有什么作用?


13

食典将其定义为“设置全球发布数据”。有助于格式化自定义查询结果以使用模板标签。” 我不太明白。

这是一个代码示例:

global $post;
$args = array( 'numberposts' => -1);
$posts = get_posts($args);
foreach( $posts as $post) : setup_postdata($post);
echo $post->ID;
endforeach; 

请您解释一下

Answers:


16

模板标签功能依赖于全局变量来访问正在处理的帖子并从中检索数据或与之相关的数据。

它们的主要变量是$post保存post对象本身。在您的示例中,它不是显式的,但是正在发生的事情是您的循环将数据分配给$post,如果迭代的名称不是$post您需要显式地(global $post; $post = $some_other_post;)。

但是,还有许多其他全局变量,目的setup_postdata()是用数据填充它们。如果您查看来源,即为:

global $id, $authordata, $currentday, $currentmonth, $page, $pages, $multipage, $more, $numpages;

请注意,在大多数情况下,您应该在wp_reset_postdata()事后致电以将全局变量恢复为原始状态。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.