问题描述

我想将图像和所有生成的缩略图上传到另一个服务器 (作为备份) 。我只找到 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。