問題描述

我有一個輝煌的想法,由於 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。