问题描述

在使用媒体上传屏幕上传 WordPress 中的附件后,是否有可以在上传图像之后运行的挂钩或过滤器,以便我可以获取上传图像的路径,以便我可以分析?

我正在构建一个插件,将在上传图像后分析图像,然后使用图像中找到的平均颜色标记图像。唯一的问题是我不知道我可以使用哪个 hook,它将在图像上传后立即开始,然后以一种方式获得新上传的文件的路径。

任何帮助将非常感激。

最佳解决方案

原来我在同事的帮助下解决了自己的问题。在媒体被上传或媒体被编辑之后被调用的两个过滤器是; ‘add_attachment’ 和’edit_attachment’ 。这是我使用的代码,然后检查附件是否是一个图像 (代码从示例中省略) 。

function analyse_attachment($attachment_ID)
{          
    $attachment = get_attached_file($attachment_ID); // Gets path to attachment
    update_post_meta($attachment_ID, "image_rgb", $the_colour);
}

add_action("add_attachment", 'analyse_attachment');
add_action("edit_attachment", 'analyse_attachment');

显然我省略了一些与这个问题无关的东西。但是,在您上传或编辑附件之后,该代码才会被调用。

次佳解决方案

你有两个可以使用的过滤器:attachment_fields_to_save 它得到两个参数 ($ post,$ attachment) 所以:

add_filter('attachment_fields_to_save',your_image_analyse_function);

function your_image_analyse_function($post, $attachment){
  $attachment['url']
  //do your stuff
}

media_send_to_editor,它获得 3 个参数 ($ html,$ send_id,$ attachment),并在您点击发送到编辑器后再次触发,可以使用 $附件。

add_filter('media_send_to_editor',your_image_analyse_function);

function your_image_analyse_function($html, $send_id, $attachment){
  $attachment['url']
  //do your stuff
}

参考文献

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