WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

Как поменять название (имя) загружаемого файла?

Файлы (в том числе картинки) на сайте загружаются из фронта, пользователями. Нужно для них сделать так, чтобы файлы которые они заливают на сайт в медиатеку WordPress переименовывались.

Нужно в в новое название файла добавить префикс домена сайта и изменить само название, например, загрузилось изображение /some-image.jpg, а надо чтобы это название превратилось в /mysite.ru-{hash}.jpg.

Загружаю файлы в медиатеку с помощью функций: media_sideload_image() и media_handle_sideload().

Помогите найти подходящий фильтр для такого переименования загружаемых файлов, не хочется вставлять кучу кода и костыли со всякими rename() во временной папке сервера.

0
Сергей
1.2 года назад
  • 1
    Kama7534

    Цепляйся на хук wp_unique_filename и возвращай нужное тебе имя:

    // меняем загружаемый файл: site.ru-{hash}.jpg
    add_filter( 'wp_unique_filename', 'hash_filename_add_domain', 10, 2 ); 
    function hash_filename_add_domain( $filename, $ext ){
    	return 'site.ru-'. md5($filename) . $ext;
    }

    ВАЖНО: этот хук нужно включать только для загружаемых с фронта картинок, т.е. обращай внимание где его включаешь, не кидай в functions.php. Ставь его прямо перед использованием media_sideload_image() и других подобных функций. Если после этих функций есть еще какой-то рабочий код, который может работать с загрузкой картинок, то нужно удалить этот хук после этих функций.

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация