从查询返回的帖子数量和解析返回的帖子的最有效方式(按时间)是什么?
第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;
}
有更省时的方法吗?我注意到图像动作确实需要一些时间。
非常感谢!
答案 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/)