Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Wordpress后端上载期间重命名文件_Wordpress_Plugins_File Rename - Fatal编程技术网

在Wordpress后端上载期间重命名文件

在Wordpress后端上载期间重命名文件,wordpress,plugins,file-rename,Wordpress,Plugins,File Rename,在Wordpress 3.0后端的上载过程中,是否有方法重命名文件?我想有一个一致的文件命名,特别是图像 我认为原始文件名或类似文件名的12(+-)位哈希值将非常棒。有什么建议吗 关于您不能使用媒体库功能自动重新命名文件。我建议在上传文件之前重命名它们。即使上传了文件,也不能通过WordPress重命名,只能通过FTP 要做到这一点,唯一的方法就是使用一个插件,将自己挂接到媒体库上传过程中。但在上传文件之前,这样做会更容易 但在上传文件之前,这样做会更容易 对此不太确定——这似乎相当容易 /**

Wordpress 3.0
后端的上载过程中,是否有方法重命名文件?我想有一个一致的文件命名,特别是图像

我认为原始文件名或类似文件名的12(+-)位哈希值将非常棒。有什么建议吗


关于

您不能使用媒体库功能自动重新命名文件。我建议在上传文件之前重命名它们。即使上传了文件,也不能通过WordPress重命名,只能通过FTP

要做到这一点,唯一的方法就是使用一个插件,将自己挂接到媒体库上传过程中。但在上传文件之前,这样做会更容易

但在上传文件之前,这样做会更容易

对此不太确定——这似乎相当容易

/**
 * @link http://stackoverflow.com/a/3261107/247223
 */
function so_3261107_hash_filename( $filename ) {
    $info = pathinfo( $filename );
    $ext  = empty( $info['extension'] ) ? '' : '.' . $info['extension'];
    $name = basename( $filename, $ext );

    return md5( $name ) . $ext;
}

add_filter( 'sanitize_file_name', 'so_3261107_hash_filename', 10 );
此筛选器创建原始文件名的32个字符哈希,保留文件扩展名。如果您愿意,可以使用
substr()
将其切碎一点

一旦文件上载到服务器上的临时目录,但在调整其大小(如果适用)并保存到上载文件夹之前,此筛选器将运行

请注意,没有文件覆盖的风险-如果新哈希文件与已存在的文件相同,WordPress将尝试在文件名后追加递增数字,直到不再发生冲突

WordPress插件
我真的在寻找一个能正确完成这项工作的插件,最后我自己制作了这个插件。它可以在我的博客上找到:!如果你使用它,请给我一个反馈:)我真诚地希望它有帮助

我实现了同样的东西,我想要一个比原始文件更随机的文件名,因为我使用这个文件的站点仅用于图片,所有文件都在一个目录中

我做了以下几件事

return md5($ip . uniqid(mt_rand(), true)) . $ext; 返回md5($ip.uniqid(mt_rand(),true))$提取;
我已经为它做了一个插件。我这么做是因为我的客户试图上传带有特殊字符的图片时遇到了太多麻烦

顺便说一句:

将筛选器添加到
sanitize\u file\u name
是完全错误的,因为
sanitize\u file\u name()
函数是格式化字符串的辅助函数,它可以在插件或主题等其他地方使用

function wp_modify_uploaded_file_names($file) {
    $info = pathinfo($file['name']);
    $ext  = empty($info['extension']) ? '' : '.' . $info['extension'];
    $name = basename($file['name'], $ext);

    $file['name'] = uniqid() . $ext; // uniqid method
    // $file['name'] = md5($name) . $ext; // md5 method
    // $file['name'] = base64_encode($name) . $ext; // base64 method

    return $file;
}

add_filter('wp_handle_upload_prefilter', 'wp_modify_uploaded_file_names', 1, 1);

谢谢你的评论!我知道我不能用媒体库函数重命名它。这就是为什么我问:)对于这个项目,它将更容易在上传进度内完成。对于那些不太熟悉批量重命名和ftp的人来说,这是一个可用性功能。感谢DeadMusic,我也想到了类似的东西。但希望有一个现成的插件或一些易于定制的东西,我不是编写wordpress插件或钩子的专家,但我会尝试一下。谢谢你的建议。stackoverflow的好家伙:)我已经更新了我的答案-将代码保存在一个文件中,名为
hash upload.php
,并将其放在你的插件文件夹中:)这太棒了!我真的很激动:)目前我找到了自己的解决方案。我已经消耗了upload+插件。同样有效。但您的解决方案要优雅得多。也减少了开销。非常感谢死亡医生(不是死亡音乐-抱歉)不能再次投票!正如我在这里问的->。为什么它也不更改post_名称?如果我将插件优先级设置为1,则相同。
function wp_modify_uploaded_file_names($file) {
    $info = pathinfo($file['name']);
    $ext  = empty($info['extension']) ? '' : '.' . $info['extension'];
    $name = basename($file['name'], $ext);

    $file['name'] = uniqid() . $ext; // uniqid method
    // $file['name'] = md5($name) . $ext; // md5 method
    // $file['name'] = base64_encode($name) . $ext; // base64 method

    return $file;
}

add_filter('wp_handle_upload_prefilter', 'wp_modify_uploaded_file_names', 1, 1);