问题描述

我有一个辉煌的想法,由于 WordPress 已经处理了一些工作,我只需要找到一个很好的方法来使这项工作。

我正在处理一个需要响应所有设备的项目,无论是台式 PC 还是移动小工具。因此,我想要的图像也是响应,这意味着移动设备不应该加载 50KB +图像。

对于每个页面或帖子,我可以使用 Post Thumbnails 添加一个精选图像,在 full-size 中,图像大约为 950×250 〜 60KB 。如果我在 iPhone /Android 上加载网站,我不希望加载约 60KB 的图片,而是希望将小缩略图加载到其中。

响应图像的默认方法是使图像的宽度为父容器的 100%,因此如果父容器也被调整大小,它将自动调整大小。不是更大图像的最佳方法。

我想过尝试 Filament Group’s responsive image script,但我尝试了,它没有正常工作。一个方法可以通过 user-agent 检测来实现,但是我不想这样做,因为 user-agents 可以被欺骗。

Here’s another method for resizing images on the fly,但这似乎是 WordPress 已经做的重复。

如果有一种方法可以使用 WordPress 默认的 Media Gallery 图像,所有已调整大小的缩略图已经被创建,那将是更可取的。

最佳解决方案

步骤 1:

定义两个自定义图像大小,例如:

<?php
add_image_size( 'normal-thumbnail', 400, 300, false ); // Default image size
add_image_size( 'mobile-device-thumbnail', 200, 150, false ); // Mobile-device image size
?>

第 2 步:

实施您选择的手段来确定客户。有几种方法,您使用哪种方法不在此问题的范围之内。但是,假设您有一个适用于您的方法,将结果输出到某个变量,如 $mobile_device = true;

步骤 3:

在您的模板文件中,根据客户端有条件地输出图像。

<?php
if ( true = $mobile_device ) { // client is mobile; be responsive
    the_post_thumbnail( 'mobile-device-thumbnail' );
} else {
    the_post_thumbnail( 'normal-thumbnail' );
}
?>

注意:您可以重复 if/else(或做一个 switch) 的多种形式因素 (即屏幕尺寸) 。只需添加多个自定义图像大小,并有条件地测试您想要支持的每个屏幕尺寸。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。