我试着从贴子的附件图片中定制尺寸,制作简单的图库。
我写了一个简单的循环:
$original = array();
$gallery = array();
$gallery_min = array();
$imgs_args = array(
\'post_status\' => null,
\'post_type\' => \'attachment\',
\'post_parent\' => get_the_ID(),
\'post_mime_type\' => \'image\',
\'order\' => \'ASC\',
\'numberposts\' => 99999
);
$post_images = get_posts($imgs_args);
if ($post_images) :
foreach ($post_images as $a) :
$original[] = wp_get_attachment_image_src($a->ID, \'gallery_origin\');
$gallery[] = wp_get_attachment_image_src($a->ID, \'gallery\');
$gallery_min[] = wp_get_attachment_image_src($a->ID, \'gallery_min\');
endforeach;
endif;
但性能页面变得很差。我检查了自定义大小图像的创建时间,发现它等于页面加载时间。这意味着
wp_get_attachment_image_src()
每次加载页面时重新生成图像。
我尝试使用image_get_intermediate_size()
用于检查自定义大小图像是否存在的函数:
foreach ($post_images as $a) :
$img = image_get_intermediate_size( $a->ID, \'gallery_origin\' );
if ($img) {
$original[] = $img[\'url\'];
} else {
$img = wp_get_attachment_image_src($a->ID, \'gallery_origin\');
$original[] = $img[0];
}
$img = image_get_intermediate_size( $a->ID, \'gallery2\' );
if ($img) {
$gallery[] = $img[\'url\'];
} else {
$img = wp_get_attachment_image_src($a->ID, \'gallery2\');
$gallery[] = $img[0];
}
$img = image_get_intermediate_size( $a->ID, \'gallery_min\' );
if ($img) {
$gallery_min[] = $img[\'url\'];
} else {
$img = wp_get_attachment_image_src($a->ID, \'gallery_min\');
$gallery_min[] = $img[0];
}
endforeach;
性能也变得很好。
是wp_get_attachment_image_src()
函数是否不应在返回数组之前检查已生成的图像?