在哪里使用$POST全局变量?

时间:2014-09-17 作者:Alamin

我使用起来很混乱$post 全局变量。是使用内环还是外环?在内部和外部循环中使用它的优势是什么?

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

这个$post 全局由设置$wp_query->the_post(). 像$post 是由主查询设置的,并且模板设置在全局变量范围内,它在整个模板中都可用,因此无需显式调用$post 当您在指定的模板中作为WP_Post 可以在任何位置访问对象。您可以访问WP_Post 只需直接调用对象,例如$post->ID 检索页面模板上的页面ID

当您需要访问模板之外的post数据时,例如,在函数或小部件中,您需要调用$post global以使post数据可用。

SO网友:aifrim

在循环中,您具有以下功能:

  • the_ID()get_the_ID() 那个回报$post->ID
  • the_title()get_the_title() 那个回报$post->post_title
  • the_content()get_the_content() 那个回报$post->post_content
等。

但是他们会为你正在查看的帖子应用过滤器和短代码。有关这些功能如何工作的更多详细信息,请访问WordPress Code Reference

在一个循环中,您应该ALWAYS 使用为您创建的函数。他们有理由。正如我之前所说:它们应用过滤器并解析短代码。您还应该阅读Global Variable WordPress codex中的文章。

在我看来,你应该只使用$post 只有当你没有其他选择的时候。例如:出于某种原因,您需要帖子的未过滤内容

在内部The Loop 上述函数及其对应函数返回循环中当前职位的信息。如果您在类别/归档页面上,请使用$post 外循环将为您提供最后$post 在循环中(如果在之后使用)或在初始化值之前没有发生任何查询。

NOTE 这是一个全局变量,在The Loop 如果您正在使用它/或插件像我以前一样使用它(if ($pageposts) : global $post; foreach ($pageposts as $post) : setup_postdata($post); ... endforeach; endif;) 由于其描述和预期用途,它将再次更改:

/**
 * Set up global post data.
 *
 * @since 1.5.0
 *
 * @param object $post Post data.
 * @uses do_action_ref_array() Calls \'the_post\'
 * @return bool True when finished.
 */
我用过setup_postdata($post) 为了使用$posts 在我正在建造的旋转木马中设计功能,该旋转木马选择了属于custom post types 基于post meta information, 当前日期等。。

我的建议是,如果您是WordPress新手,请坚持使用functions 实施对象you. 抽象化有它的好处。它使事物更容易找到、记住和使用。

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post