2016-12-14 276 views
0

我试图在将文件上传到WordPress时重命名文件,我希望它们获得已过滤的帖子标题的名称。 基本上我想要做与here一样的事情,但不幸的是,当我使用this的代码时 - 我没有得到$post变量的值。WordPress;上传文件时重命名

我得到的唯一东西是“空”名,最后有一些数字和文件扩展名,例如“-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

我已经制作了一个很久以前叫做File Renaming on Upload的插件,可以帮助你解决这个问题,但是如果你正在寻找关于你的代码的帮助,我可以说你可以尝试一种不同的方法来获得帖子变量。试试这个:

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_title。您可以使用

$post->post_name 

然后你不需要使用sanitize_file_name()功能