WordPress как на ладони

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

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

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

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

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

0
Сергей
6 лет назад
  • 1
    Kama9616

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

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