更高效的Wordpress查询解析? (get_posts($查询))

时间:2011-02-24 17:57:18

标签: php wordpress parsing

从查询返回的帖子数量和解析返回的帖子的最有效方式(按时间)是什么?

第1部分:

我目前有这段代码:

/* $query = {
'numberposts' = '15',
'queryvar1' = '…',
'queryvar2' = '…';
}
*/
$lastposts = get_posts($query); // This uses the original query, and will only return 15 results

$print['returnedcount'] = count($lastposts); // Uses some resources (+ acceptable time)

$query['numberposts'] = "-1"; // Get total results from query 
$print['totalposts'] = count(get_posts($query)); // Uses lots of resources (+ lots of time)

我对第二个get_posts($query)提供的其他数据毫无用处,我怎样才能加快速度呢?我只需要计算查询返回的帖子总数(numberposts - 值除外。

第2部分:

稍后将使用$lastposts - 对象来获取发布数据(ID,日期,标题,评论计数,缩略图和作者ID)。

这些数据被输入$print - 数组,如下所示:

foreach ($lastposts as $post){
    // ID
    $print['id'][] = (string)$post->ID;
    // Date
    $print['date'][] = (string)$post->post_date;
    // Title
    $print['title'][] = (string)$post->post_title;
    // Comment count
    $print['comments'][] = (string)$post->comment_count;
    // Images
    $image = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'medium');
    $print['image'][] = (string)$image[0];
    $imageRetina = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'large');
    $print['imageretina'][] = (string)$imageRetina[0];
    // Author
    $print['author'][] = (string)$post->post_author;
}

有更省时的方法吗?我注意到图像动作确实需要一些时间。

非常感谢!

2 个答案:

答案 0 :(得分:2)

对于第一部分,您可以创建新的WP_Query对象,而不是使用get_posts。这应该比你问题中的代码更有效,但差异可能是微不足道的。

$query = new WP_Query();
$query->query(array(
    'posts_per_page' => 15
));

$print['returnedcount'] = $query->post_count;
$print['totalposts'] = $query->found_posts;

答案 1 :(得分:-1)

您是否可以在第一次运行查询时使用所需内容填充数组 - 这将使运行get_posts()变得不必要。

所以,你的模板文件中有

while( have_posts() ): the_post();
    // do your normal output here e.g. the_content(); etc.

    $print['title'][] = get_the_title();
    // any more data you want to collect.

endwhile;

您可以将整个数据收集位移动到functions.php。你也在使用缓存吗?这可能有所帮助。 (例如http://wordpress.org/extend/plugins/hyper-cache/