我们遇到了一个问题,通过媒体上传工具上传图像有时会超时。使用NewRelic,我追踪到wp_unique_filename
, 我想这是有道理的,因为我们有超过200000张图片。
我想我应该做的就是跳过这个,并自动生成一个哈希,以便在上传时将每个文件名附加到末尾。
似乎有一些不错的文档和相关问题,但我似乎无法将其付诸实施。我添加了调试日志以查看发生了什么,它始终调用原始功能。
我仍在思考过滤器以及它们如何与内置功能协同工作,因此我可能会犯一些非常简单的错误。
一个重要的警告是,我不是在这里进行自定义上传,而是通过WP媒体库进行上传。
尝试#1
add_filter( \'wp_unique_filename\', \'hash_filename\', 10, 4);
function hash_filename($filename, $ext, $dir, $unique_filename_callback) {
error_log(\'in hash_filename\');
$new_filename = str_replace($ext, "", $filename);
return $new_filename . "-" . md5(rand()) . $ext;
}
这仍然需要
wp_unique_filename
然后打电话
hash_filename
. 我的日志如下所示:
[22-Feb-2021 15:07:07 UTC] in wp_unique_filename
[22-Feb-2021 15:07:07 UTC] in original wp_unique_filename logic
[22-Feb-2021 15:07:07 UTC] in hash_filename
尝试#2
function hash_filename($filename, $ext, $dir, $unique_filename_callback) {
error_log(\'in hash_filename\');
$new_filename = str_replace($ext, "", $filename);
return $new_filename . "-" . md5(rand()) . $ext;
}
$overrides = array(\'unique_filename_callback\' => \'hash_filename\' );
我的想法是如果我
$overrides
var,它会被
media_handle_upload()
或
wp_upload()
. 我对这件事不是很有信心,因为我似乎错过了什么。它也不起作用。我的日志显示:
[22-Feb-2021 15:13:06 UTC] in wp_unique_filename
[22-Feb-2021 15:13:06 UTC] in original wp_unique_filename logic
我已经尝试了上述的其他变体,但我觉得我已经到了这样的地步,我只是在尝试一些没有意义的事情,希望一个能起作用。其他变化包括:
add_filter( \'unique_filename_callback\', \'hash_filename\' );
$overrides = array(\'test_form\' => false, \'unique_filename_callback\' => \'hash_filename\' );
apply_filters(\'wp_handle_upload\',$overrides);
// I felt this was promising but in looking up wp_handle_upload_overrides, it appears to not even be a thing? :(
$overrides = array(\'unique_filename_callback\' => \'hash_filename\' );
add_filter(\'wp_handle_upload_overrides\',$overrides);
有人能帮忙吗?