Поиск по сайту:

Как рандомизировать загруженные имена файлов в WordPress


Возможности загрузки файлов WordPress действительно улучшились за эти годы, но есть одна проблема, с которой мы продолжаем сталкиваться — имена файлов идеально сохраняются при загрузке, что приводит к непоследовательным и очень длинным путям к файлам изображений.

И что еще хуже, если вы используете Skitch для захвата скриншотов различных команд терминала, он захватывает полный путь от терминала и использует его в качестве имени файла, которое просто абсурдно длинное.

Гораздо более простое решение — просто добавить пару строк кода, чтобы изменить все загружаемые изображения на простое рандомизированное имя файла, а затем обрезать его до первых 8 символов, чтобы убедиться, что пути к изображениям в HTML не слишком сумасшедшие. .

// randomize upload filenames 
function htg_randomize_uploaded_filename( $filename ) {

	// does it have an extension? grab it
    $ext  = empty( pathinfo( $filename )['extension'] ) ? '' : '.' . pathinfo( $filename )['extension'];

    // return the first 8 characters of the MD5 hash of the name, along with the extension
    return substr(md5($filename), 0, 8) . $ext;
}

add_filter( 'sanitize_file_name', 'htg_randomize_uploaded_filename', 10 );

Вставьте код в свой файл functions.php, расположенный в папке вашей темы, и он должен сразу начать работать.

Для этого к фильтру sanitize_file_name добавляется функция, которая выполняет работу и возвращает новое имя файла. WordPress попытается использовать это новое имя, но если возникнет конфликт, он добавит -1 в конец и продолжит нумерацию до тех пор, пока конфликт не исчезнет. На самом деле это маловероятно, но хорошо знать, что это не будет проблемой.