我有点像wordpress noob,试图从多个帖子中获取一些图像以显示在网格中。我正在处理的网站基本上会在“特色图片”上发布很多帖子(最多56个)并在主页面上显示,点击后将图片加载到帖子中。 这是我正在使用的代码:
$ args = array('numberposts'=> 56,'order'=>'DESC','orderby'=>'date','category'=>'120'); $ postslist = get_posts($ args);
if(count($postslist) > 0){
foreach ($postslist as $post) : setup_postdata($post); ?>
<div class='oneCell'>
<?php
$image = get_the_post_thumbnail($this_post->ID, 'full size');
$imageSrc = substr($image, strpos($image, "src") + 5);
$imageSrc = substr($imageSrc, 0, strPos($imageSrc, "\""));
$finalImage = "<img class='lazy' src='/images/grey.png' data-original='" . $imageSrc . "' />";
$lastImage = "<a href='";
$lastImage .= catch_that_image();
$lastImage .= "'>";
$lastImage .= $finalImage;
$lastImage .= "</a>";
echo $lastImage;
?>
</div>
<?php
$currentCount = $currentCount + 1;
endforeach;
循环中的$lastImage
创建一个“a”标记,通过jquery控件显示图像。控制不是问题,因为它在网站的另一部分上工作100%。
当渲染时,它基本上渲染灰色的正方形而没有图像(正是我期望的那样),但非常缓慢,每1/2 - 3/4秒渲染一个框,一次一个,直到它们全部完成,然后页面按预期工作。
我的猜测是因为我的代码不是最有效的。有人能指出我正确的方向来清理它吗?或者关于如何加快加载时间的一些想法?
答案 0 :(得分:1)
我认为延迟不是由浏览器尝试显示图像引起的,但PHP使用56次查询压倒了数据库。
本机函数用于拉取一个帖子的缩略图。如果您要查询N个帖子的图像,您应该使用自定义脚本直接从wp_postmeta表中检索一个查询中的缩略图。
除了修改查询($ wpdb类提供查询方法以完成此操作)之外,您还可以使用任何缓存机制仅在第一次请求每个图像时命中数据库。也许甚至W3TC插件都能够缓存get_thumbnail函数的结果。