我正在优化我的网站,其中一部分是压缩图像和使用较小的版本。我正在使用WP Smush并为每个图像创建一组大小。所有图像都被弄脏了。
我的模板是非常定制的,我在一些地方没有使用普通的所见即所得。在这些情况下,我编写了两个函数来根据需要提取较小的图像大小:
(注意:第一个函数来自https://wordpress.org/support/topic/need-to-get-attachment-id-by-image-url)
function get_image_id_by_link($link){
global $wpdb;
$link = preg_replace(\'/-\\d+x\\d+(?=\\.(jpg|jpeg|png|gif)$)/i\', \'\', $link);
return $wpdb->get_var("SELECT ID FROM {$wpdb->posts} WHERE BINARY guid=\'$link\'");
}
function get_image_url($url, $preferred_size = 900){
$id = get_image_id_by_link($url);
if(wp_get_attachment_image_src($id, array($preferred_size, $preferred_size))) {
return wp_get_attachment_image_src($id, array($preferred_size,$preferred_size))[0];
}
else if(wp_get_attachment_image_src($id, array(900,900))) {
return wp_get_attachment_image_src($id, array(900,900))[0];
}
else if(wp_get_attachment_image_src($id, \'medium_large\')){
return wp_get_attachment_image_src($id, \'medium_large\')[0];
}
else if (wp_get_attachment_image_src($id, \'large\')){
return wp_get_attachment_image_src($id, \'large\')[0];
}
else {
return $url;
}
}
此功能适用于我现在上载和使用的任何图像。但是,在我推这个函数之前上传的任何图像都会拉取全尺寸的图像url。我已经证实,这些图像(早期的图像)确实尺寸较小。
虽然我可以重新上传所有图像,但我很好奇为什么会发生这种情况,以及我如何修复它。
谢谢
编辑
以下是注册尺寸,根据get_intermediate_image_sizes()
:
Array
(
[0] => thumbnail
[1] => medium
[2] => medium_large
[3] => large
[4] => medium-box
[5] => large-box
[6] => responsive-100
[7] => responsive-150
[8] => responsive-200
[9] => responsive-300
[10] => responsive-450
[11] => responsive-600
[12] => responsive-900
)