WP_QUERY-对象操作与WordPress函数

时间:2014-12-08 作者:myol

虽然这可能是基于意见的,但必须有某种一致的方式/优化的方式来处理来自WP_Query. 例如,获得帖子标题的“最佳”方式是什么?

$query = new WP_Query($args);

if ($query->have_posts()) {
     while ($query->have_posts()) {
         $query->the_post();

         $choice1 = get_the_title();
         $choice2 = the_title();
         $choice3 = $query->post->post_title;
     }
 }
我认为,由于函数调用的一致性和减少,第三个选项可能是更好的选择(而且更加一致,因为ifwhile 语句使用对象表示法。)

第三个选项还可以在数量有限的WordPress函数上提供更大的数据访问权限。使用它有什么真正的缺点吗?如果没有,为什么还要麻烦WordPress函数呢?卫生设备和系统捕捉错误?

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

所有这三个都可以做同样的事情,这只是你想如何使用它们的问题。

the_title() 呼叫get_the_title() 通过以下方式获得标题$post->post_title.

View the_title() Source on Trac

View get_the_title() Source on Trac

就个人而言,我永远不会使用选项3,因为从可读性的角度来看,它所做的并不是最明显的。最重要的是,正如米洛指出的,你确实输了the_title 在中找到的筛选器get_the_title():

return apply_filters( \'the_title\', $title, $id );

选项1/2用于不同的场景。您永远无法分配the_title() (不带任何参数)设置为变量,因为默认情况下,它会将标题回显到屏幕上。功能get_the_title() 如果需要对帖子标题执行任何类型的操作,则用于实际将标题分配给变量。

你可以使用任何一种选择来达到同样的效果,这取决于你想做什么。

SO网友:Milo

直接访问帖子内容的问题是您丢失了过滤器。这是否重要取决于背景。如果您要构建一个用于分发的主题,那么您总是希望使用API而不是直接访问对象。

SO网友:Pieter Goosen

您可能知道,也可能不知道,主查询使用WP_Query, 与您的问题中的自定义查询的唯一区别是,主查询解析URL以获取传递的参数和参数,其中自定义查询使用用户定义的参数和参数。

的主查询和任何新实例WP_Query 返回完全相同的结果数组,最重要的是WP_Post 中返回的帖子的对象$posts 大堆

所以,在性能上,它们都是一样的。的任何实例WP_Query 使用复杂的过滤器和缓存,使其尽可能地发挥性能。

如前所述,使用模板标记作为post对象(未过滤的)在返回之前通过过滤器运行(get_ 前缀)或回声(无get_ 前缀)。

结束

相关推荐

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

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