問題描述

我想將圖像和所有生成的縮略圖上傳到另一個服務器 (作為備份) 。我只找到 add_attachment,但是在上傳圖像並更新了 postmeta 表之後才會被觸發。

我想等到生成所有的縮略圖大小,然後取出文件並將其上傳到其他服務器。有什麼鈎子符合我的期望嗎?

最佳解決方案

WordPress 中的縮略圖可以通過使用 wp_generate_attachment_metadata()生成,該功能在生成所有縮略圖‘wp_generate_attachment_metadata’ 後觸發一個過濾器,並且過濾器為掛鈎的函數提供 $ metadata 和 $ attachment_id 。您可以將自定義功能掛接到此過濾器。

$ metadata:附件元數據。您需要的是 $ metadata [‘sizes’][‘size-name’],’size-name’ 是由 add_image_size() 或默認值添加的縮略圖大小的名稱。例如

$metadata[sizes] => Array
       (
           [thumbnail] => Array
               (
                   [file] => example_image-150x150.jpg
                   [width] => 150
                   [height] => 150
                   [mime-type] => image/jpeg
               )
           [medium] => Array
               (
                   [file] => example_image-4-300x194.jpg
                   [width] => 300
                   [height] => 194
                   [mime-type] => image/jpeg
               )
           [mysize] => Array
               (
                   [file] => example_image-4-400x400.jpg
                   [width] => 400
                   [height] => 400
                   [mime-type] => image/jpeg
               )
       )

從這裏您可以知道某些附件存在哪些大小,只能上傳這些尺寸/縮略圖。要使這些縮略圖使用像 wp_get_attachment_image_src($ id,$ size_name) 這樣的功能來檢索縮略圖。 (可選):安裝強制再生縮略圖插件,以重新運行以前上傳的圖像的 wp_generate_attachment_metadata() 。讓我知道,如果這適用於你。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。