WordPress; Переименование файла при загрузке

Я пытаюсь переименовать файлы при загрузке их в WordPress, и я хочу, чтобы они получили название очищенного заголовка сообщения.
В основном я хочу сделать то же самое, что и Вот, но, к сожалению, когда я использую код из этот ответ — я не понимаю значение $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 );

Спасибо заранее за вашу помощь.

0

Решение

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]