我想获取上传图像的完整本地文件名,以便将其复制到新目录,并使用自己的图像处理脚本进行处理。我应该研究哪些挂钩/行动来实现这一点?
谢谢
我想获取上传图像的完整本地文件名,以便将其复制到新目录,并使用自己的图像处理脚本进行处理。我应该研究哪些挂钩/行动来实现这一点?
谢谢
这个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 );
如果需要文件名,而不仅仅是相对于文件根的路径,则必须添加以下代码行:
$filename = substr($results[\'file\'], ( strrpos($results[\'file\'], \'/\', -1) + 1 ) ); //add +1 to remove the slash at the beginning
编辑:发布后不久strrpos()
解决方案,我找到了一个最好的:$filename = basename($results[\'url\']);
我认为我以前没有在WP中创建文件夹/文件的实际需要,但对于插件,我需要缓存(用于调整大小的图像)文件夹wp-content/uploads.这就提出了一个问题——我真的需要用Filesystem API (包括在需要时杂乱无章地要求FTP凭据),或wp_mkdir_p() 够了吗?