上载时获取图像文件名的钩子

时间:2012-01-11 作者:Tom

我想获取上传图像的完整本地文件名,以便将其复制到新目录,并使用自己的图像处理脚本进行处理。我应该研究哪些挂钩/行动来实现这一点?

谢谢

2 个回复
最合适的回答,由SO网友:Simon Scarfe 整理而成

这个handle_upload 运行wp\\u handle\\u upload后调用hook,它以一个由“file”、“url”和“amp;”组成的命名数组发送键入“”。您可能会使用这样的代码来利用它,这取决于您需要实现的目标:

function process_images($results) {
    if( $results[\'type\'] === \'image/jpeg\' ) { // or /png or /tif / /whatever
        $filename = $results[ \'file\' ];
        $url = $results[ \'url\' ];

        // manipulate the image
    }
}

add_action(\'wp_handle_upload\', \'process_images\');
编辑:如果您还需要附件ID,那么最好在更高的级别进行连接,例如添加/编辑附件:

add_action(\'add_attachment\', \'process_images\');
add_action(\'edit_attachment\', \'process_images\');
在这种情况下,发送的变量是attachment\\u id,您可以从中派生其余的变量,如下所示:

$metadata = wp_get_attachment_metadata( $results );

SO网友:anou

如果需要文件名,而不仅仅是相对于文件根的路径,则必须添加以下代码行:

$filename = substr($results[\'file\'], ( strrpos($results[\'file\'], \'/\', -1) + 1 ) ); //add +1 to remove the slash at the beginning 
编辑:发布后不久strrpos() 解决方案,我找到了一个最好的:

$filename = basename($results[\'url\']);

结束

相关推荐

在Uploads-wp_mkdir_p()或WP_Filessystem中创建目录?

我认为我以前没有在WP中创建文件夹/文件的实际需要,但对于插件,我需要缓存(用于调整大小的图像)文件夹wp-content/uploads.这就提出了一个问题——我真的需要用Filesystem API (包括在需要时杂乱无章地要求FTP凭据),或wp_mkdir_p() 够了吗?