WordPress的;上传文件重命名

时间:2016-12-14 10:57:11

标签: php wordpress plugins rename filenames

我正在尝试重命名文件,同时将它们上传到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 );

提前感谢您的帮助。

1 个答案:

答案 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()功能