2016-12-14 137 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()功能