【问题标题】:WordPress; File renaming on uploadWordPress;上传文件重命名
【发布时间】:2017-04-29 16:20:55
【问题描述】:

我正在尝试在将文件上传到 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 );

提前感谢您的帮助。

【问题讨论】:

    标签: php wordpress plugins rename filenames


    【解决方案1】:

    我很久以前制作了一个名为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()函数了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-24
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      • 2012-11-04
      • 1970-01-01
      • 2012-06-24
      相关资源
      最近更新 更多