2016-12-14 6 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, который может помочь вам в этом, но если вы ищете помощь в своем коде, я могу сказать, что вы можете попробовать другой подход, чтобы получить переменную 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() функция