Переименуйте файлы во время загрузки в бэкенде Wordpress

есть ли способ переименовать файлы во время прогресса загрузки в Wordpress 3.0 бэкенд? Я хотел бы иметь последовательное именование файлов, специально для изображений.

Я думаю 12 (+-), значение хэш-функции цифры исходного имени файла или чего-то подобного было бы потрясающим. Какие-либо предложения?

С уважением

14
задан gearsdigital 15 July 2010 в 20:51
поделиться

2 ответа

Но было бы проще сделать это перед загрузкой файлов.

Не совсем уверен в этом - это кажется довольно простым;

/**
 * @link http://stackoverflow.com/a/3261107/247223
 */
function so_3261107_hash_filename( $filename ) {
    $info = pathinfo( $filename );
    $ext  = empty( $info['extension'] ) ? '' : '.' . $info['extension'];
    $name = basename( $filename, $ext );

    return md5( $name ) . $ext;
}

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

Этот фильтр создает хэш из 32 символов исходного имени файла, сохраняя расширение файла. Вы можете немного сократить его, используя substr () , если хотите.

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

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

Плагин WordPress

<?php

/**
 * Plugin Name: Hash Upload Filename
 * Plugin URI:  http://stackoverflow.com/questions/3259696
 * Description: Rename uploaded files as the hash of their original.
 * Version:     0.1
 */

/**
 * Filter {@see sanitize_file_name()} and return an MD5 hash.
 *
 * @param  string $filename
 * @return string
 */
function so_3261107_hash_filename( $filename ) {
    $info = pathinfo( $filename );
    $ext  = empty( $info['extension'] ) ? '' : '.' . $info['extension'];
    $name = basename( $filename, $ext );

    return md5( $name ) . $ext;
}

add_filter( 'sanitize_file_name', 'so_3261107_hash_filename', 10 );
30
ответ дан 1 December 2019 в 06:47
поделиться

Вы не можете автоматически переименовать файл с помощью функции библиотеки мультимедиа. Я бы рекомендовал переименовать файлы перед их загрузкой. Даже после загрузки файла вы не можете переименовать его через WordPress, а только через FTP.

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

0
ответ дан 1 December 2019 в 06:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: