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