eurobyte.ru - мощные сервера с Дата-центрами в Нидерландах и Москве. От 159 ₽/мес.

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

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

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

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

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

0
Сергей
6.5 лет назад
  • 1
    Kama 9771

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

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

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

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