我正在尝试重命名文件,同时将它们上传到WordPress,我希望他们获得已消毒的帖子标题的名称。
基本上我想做与here相同的事情,但不幸的是,当我使用this中的代码回答时 - 我没有得到$post
变量的值。
我唯一得到的是“空”名称,末尾有一些数字和文件扩展名,例如“-5263.png”,随每个新文件递增。
由于某种原因,我没有获得$post
值,这将给我帖子标题,它只是将文件名更改为......好吧,没有,只是在最后添加一些数字,所以它不覆盖任何其他文件。
我真的想知道我的代码有什么问题:
function new_filename( $filename, $filename_raw ) {
global $post;
$info = pathinfo( $filename );
$ext = empty( $info['extension'] ) ? '' : '.' . $info['extension'];
$new = $post->post_title;
if ( $new != $filename_raw ) {
$new = sanitize_file_name( $new );
}
return $new . $ext;
}
add_filter( 'sanitize_file_name', 'new_filename', 10 );
提前感谢您的帮助。
答案 0 :(得分:0)
我很久以前制作了一个名为File Renaming on Upload的插件,它可以帮助你解决这个问题,但是如果你正在寻找代码的帮助,我可以说你可以尝试一种不同的方法来获取post变量。试试这个:
function get_post() {
global $post;
$post_obj = null;
if( !$post ){
$post_id = isset( $_REQUEST['post_id'] ) ? $_REQUEST['post_id'] : false;
if ( $post_id && is_numeric( $post_id ) ) {
$post_obj = get_post( $post_id );
}
}else{
$post_obj = $post;
}
return $post_obj;
}
获得post变量后,您不需要像这样使用post_title。你可以使用
$post->post_name
然后你不需要使用 sanitize_file_name()功能