gpt4 book ai didi

wordpress - 在 Wordpress 中上传时重命名文件

转载 作者:行者123 更新时间:2023-12-01 12:48:57 25 4
gpt4 key购买 nike

我正在尝试重命名上传文件名以匹配帖子标题。

另一个线程展示了如何重命名为哈希:
Rename files during upload within Wordpress backend

使用这段代码:

function make_filename_hash($filename) {
$info = pathinfo($filename);
$ext = empty($info['extension']) ? '' : '.' . $info['extension'];
$name = basename($filename, $ext);
return md5($name) . $ext;
}
add_filter('sanitize_file_name', 'make_filename_hash', 10);

有谁知道重命名文件以匹配 Post Title.extension 的代码?

最佳答案

barakadam 的回答几乎是正确的,只是根据我在他的回答下方留下的评论做了一点修正。

function new_filename($filename, $filename_raw) {
global $post;
$info = pathinfo($filename);
$ext = empty($info['extension']) ? '' : '.' . $info['extension'];
$new = $post->post_title . $ext;
// the if is to make sure the script goes into an indefinate loop
if( $new != $filename_raw ) {
$new = sanitize_file_name( $new );
}
return $new;
}
add_filter('sanitize_file_name', 'new_filename', 10, 2);

代码解释:

假设您将原始文件名为 picture one.jpg 的文件上传到名为“我在巴黎/伦敦的假期”的帖子。

当您上传文件时,WordPress 使用 sanitize_file_name() 从原始文件名中删除特殊字符功能。

函数的右下方是过滤器所在的位置。

// line 854 of wp-includes/formatting.php
return apply_filters('sanitize_file_name', $filename, $filename_raw);

此时,$filename 将是 picture-one.jpg。因为我们使用了 add_filter(),所以我们的 new_filename() 函数将以 $filename as picture-one.jpg 和 $filename_raw as picture one.jpg.

然后,我们的 new_filename() 函数将文件名替换为帖子标题并附加原始扩展名。如果我们停在这里,新文件名 $new 将最终成为 My Holiday in Paris/London.jpg,我们都知道这是一个无效的文件名。

这是我们再次调用 sanitize_file_name 函数的时候。注意那里的条件语句。由于此时 $new != $filename_raw,它会尝试再次清理文件名。

sanitize_file_name()将被调用,在函数结束时,$filename 将是 My-Holiday-in-Paris-London.jpg$filename_raw仍然是 我在巴黎/伦敦的假期.jpg。由于 apply_filters(),我们的 new_filename() 函数再次运行。但这一次,因为 $new == $filename_raw,到此结束。

My-Holiday-in-Paris-London.jpg 最终返回。

关于wordpress - 在 Wordpress 中上传时重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13751377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com