Intereting Posts
Theme Customizer – динамический CSS-файл PHP Разрешение коротких кодов внутри атрибутов функция выпадающих состояний us и echo в файлах шаблонов тем Не удалось создать пользовательскую реализацию шаблона архива продукта WooCommece Выбор пользовательского таксономического тега Front-End Список пользователей из набора ролей wordpress multisite, https для всего сайта или просто администратора? странная ошибка короткого кода: действительно ли короткие коды требуют какой-либо зависимости? Добавить текст ссылки Вернуться к разделу Вставка / редактирование ссылки Тема двадцать десять – как разместить разные заголовки на каждой странице Получение URL-адреса сайта, включая переднюю базу Сохранение метаданных связанного сообщения в save_post добавление элементов подменю делает элемент родительского меню не кликабельным Как определить вывод значения атрибута shortcode? Добавить изображение в RSS-плагин с другого RSS

Добавить суффикс к имени файла загруженных изображений

Я зарегистрировал 3 пользовательских размера изображения (Двойной размер, для дисплеев сетчатки) с add_image_size: thumbnail @ 2x, medium @ 2x и large @ 2x.

function retina_image_sizes() { $retina_sizes = array( 'thumbnail@2x' => array( 'width' => get_option( 'thumbnail_size_w' ) * 2, 'height' => get_option( 'thumbnail_size_h' ) * 2, 'crop' => get_option('thumbnail_crop'), ), 'medium@2x' => array( 'width' => get_option( 'medium_size_w' ) * 2, 'height' => get_option( 'medium_size_h' ) * 2, 'crop' => false, ), 'large@2x' => array( 'width' => get_option( 'large_size_w' ) * 2, 'height' => get_option( 'large_size_h' ) * 2, 'crop' => false, ) ); foreach ( $retina_sizes as $name => $data ) { add_image_size( $name, $data['width'], $data['height'], $data['crop'] ); } } add_action( 'init', 'retina_image_sizes'); 

Соглашение об именах WordPress – это имя_файла-ширины x height.jpg. Но мне нужно, чтобы их называли по-другому (filename-originalwidth x originalheight@2x.jpg)

Если я загружаю изображение, а эскиз имеет размер 100×100, например, я хочу, чтобы изображения были названы:

 example-100x100.jpg and example-100x100@2x.jpg 

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

Как изменить имя файла описанным выше способом? Правильно ли крючок add_attachment?

Solutions Collecting From Web of "Добавить суффикс к имени файла загруженных изображений"

Я сделал это по-другому. Мне просто нужно было обновить код от Gerasimos Tsiamalos Retina Plugin до WordPress 3.5., Используя редактор изображений вместо изменения размера изображения.

Вот как это выглядит:

 function nothing_image_make_retina_size($file, $width, $height, $crop=false) { if ( $width || $height ) { $resized_file = wp_get_image_editor($file); if ( ! is_wp_error( $resized_file ) ) { $resized_file->resize( $width*2, $height*2, $crop ); $filename = $resized_file->generate_filename( $width . 'x' . $height . '@2x' ); $resized_file->save($filename); } if ( !is_wp_error($resized_file) && $resized_file && $info = getimagesize($filename) ) { $filename = apply_filters('nothing_retina_image_make_intermediate_size', $filename); return array( 'file' => wp_basename( $filename ), 'width' => $info[0], 'height' => $info[1], ); } } return false; } function nothing_generate_retina_image_metadata( $metadata, $attachment_id ) { $attachment = get_post( $attachment_id ); $file = get_attached_file($attachment_id); $old_metadata = $metadata; foreach ($metadata as $k => $v) { if (is_array($v)) { foreach ($v as $key => $val) { if (is_array($val)) { nothing_image_make_retina_size($file, $val['width'], $val['height'], true); } } } } return $old_metadata; } add_filter('wp_generate_attachment_metadata', 'nothing_generate_retina_image_metadata', 10, 2); function nothing_delete_retina_images( $attachment_id ) { $nothing_metas = wp_get_attachment_metadata( $attachment_id ); $nothing_updir = wp_upload_dir(); $nothing_path = pathinfo($nothing_metas['file']); $nothing_path_name = $nothing_path['dirname']; $nothing_updir = wp_upload_dir(); foreach ($nothing_metas as $nothing_meta => $nothing_meta_val) { if ($nothing_meta === "sizes") { foreach ($nothing_meta_val as $nothing_sizes => $nothing_size) { $nothing_original_filename = $nothing_updir['basedir'] . "/" . $nothing_path_name . "/" . $nothing_size['file']; $nothing_x2_filename = substr_replace($nothing_original_filename, "@2x.", strrpos($nothing_original_filename, "."), strlen(".")); if (file_exists($nothing_x2_filename)) { unlink($nothing_x2_filename); } } } } } add_filter('delete_attachment','nothing_delete_retina_images');