Intereting Posts
Как получить идентификаторы категорий из настроек виджета? WordPress не открывает сообщения с номерами, если permalink – post_name Добавить диапазон к первой букве сообщения Показать контактную форму 7 в всплывающем окне Пользовательский тип сообщения не использует single.php или single- {custom_post_type} .php Показ пользовательского таксономического родительского термина и детского срока публикации Пользовательское поле 101 Тестирование локального сервера с помощью MAMP / wordpress на мобильном устройстве? Фильтр get_bookmarks не предоставляет аргумент запроса (wp 3.1) Получить $ post-> ID из URL-адреса Код для загрузки файла PHP, названного в честь идентификатора категории Исправить проблему с Textdomain Translation Как создать полноцветное фоновое изображение при наведении курсора на текст? Создание виджета с вкладками Enqueue Javascript после ВСЕХ других скриптов (включая скрипты Async)

Изменить имя файла вложения

Есть ли функция, которая позволяет мне изменить имя файла вложения на основе идентификатора прикрепленного файла?

Благодаря! Деннис

Solutions Collecting From Web of "Изменить имя файла вложения"

Это позволит вам переименовать вложение сразу после его загрузки:

add_action('add_attachment', 'rename_attacment'); function rename_attacment($post_ID){ $post = get_post($post_ID); $file = get_attached_file($post_ID); $path = pathinfo($file); //dirname = File Path //basename = Filename.Extension //extension = Extension //filename = Filename $newfilename = "NEW FILE NAME HERE"; $newfile = $path['dirname']."/".$newfilename.".".$path['extension']; rename($file, $newfile); update_attached_file( $post_ID, $newfile ); } 

Случаи использования

Функция работает для

  • Добавление файлов
  • Обновление файлов (да, также для уже существующих файлов)
  • Несколько файлов

Случайные случаи

Он прерывает автоматические задания, выполняемые wordpress автоматически, или если целевые типы файлов или типы mime не выполняются.

Плюсы

Вы можете установить имя файла, типы файлов и типы mime, которые вы хотите изменить внутри функции до цикла foreach . Файл получает идентификатор сообщения, а затем прикрепленный идентификатор вложения, поэтому вы можете безопасно загружать и изменять несколько файлов одновременно. Это также касается упорядочения файлов с помощью (первого) идентификатора сообщения и (второго) идентификатора вложения.

 function wpse30313_update_attachment_names($post_ID) { // Abort if WP does an autosave if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return; # >>>> SET // New file name: $new_file_name = "___"; // Best would be to take the post name as file name instead of a custom title: # $post_data = get_post( $post_ID ); # $new_file_name = $post_data->post_name; // The file types we want be changed: $allowed_types = array( 'image' ); // The mime types we want to be changed: $allowed_ext = array( 'jpg' ,'jpeg' ,'gif' ,'png' ); # <<<< SET // Appended by post ID for collision safety $new_file_name = "{$new_file_name}-{$post_ID}"; // get all attached files $attachments = get_children( array( 'post_type' => 'attachment' ,'post_parent' => $post_ID ) ); // Bulk updating attached file names foreach ( $attachments as $att ) { $att_ID = $att->ID; // Append attachment ID (collision safety) // Also allows sorting files by post & then attchment ID $new_name = "{$new_file_name}-{$att_ID}"; $mime_type = explode( "/", get_post_mime_type( $att->ID ) ); $file_type = $mime_type[0]; $mime_type = $mime_type[1]; // Skip file types we don't want to change if ( ! in_array( $file_type, $allowed_types ) ) continue; // Skip mime types we don't want to change if ( ! in_array( $mime_type, $allowed_ext ) ) continue; // Get current file info $file_path = get_attached_file( $att->ID ); $path = pathinfo( $file_path ); $dir = trailingslashit( $path['dirname'] ); $ext = $path['extension']; // Build final name $final = "{$dir}{$new_name}.{$ext}"; // Skip if the path was already changed on upload // If we don't set this, the function wouldn't work for older files if ( $file_path == $final ) continue; // Update attachment-post meta info for file rename( $file_path, $final ); update_attached_file( $att_ID, $final ); } return; } add_action( 'add_attachment', 'wpse30313_update_attachment_names' ); add_action( 'edit_attachment', 'wpse30313_update_attachment_names' ); 

Функция должна быть добавлена ​​в ваш файл functions.php или (лучше) в виде отдельного небольшого плагина. Просто добавьте комментарий к плагину сверху, загрузите его в папку плагинов и активируйте.

Я бы использовал rename PHP и путь к файлу, заданному get_attached_file .

 function rename_file( $post_id, $newname ) { $file = get_attached_file( $post_id ); rename($file,dirname($file).$newname) } 

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

Дайте мне знать, если это поможет, и я изменю код на фактический рабочий код.

 add_action('add_attachment', 'rename'); function rename($post_ID){ $post = get_post($post_ID); $file = get_attached_file($post_ID); $path = pathinfo($file); $newfilename = "mynewfilename"; $newfile = $path['dirname']."/".$newfilename.".".$path['extension']; rename($file, $newfile); update_attached_file( $post_ID, $newfile ); } 

Ссылка http://codex.wordpress.org/Function_Reference/update_attached_file http://wordpress.org/tags/add_attachment