add_image_size() — регистрирует размер изображения

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

add_image_size( $name, $width = 0, $height = 0, $crop = false )
$name
(строка) название размера. Понадобится вам для использования в функциях, например таких, как wp_get_attachment_image_src() или the_post_thumbnail(). Нельзя использовать следующие зарезервированные названия: thumb, thumbnail, medium, large, post-thumbnail,
$width
(целое число) ширина изображения в пикселях,
$height
(целое число) высота изображения в пикселях,
$crop
(логическое) может принимать значения:

  • false (по умолчанию) — изображение будет вписано в указанный размер с сохранением пропорций,
  • true — изображение будет точно такого же размера, который указан в параметрах, а то, что не поместится, будет обрезано;

Функция ничего не возвращает.

Пример

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

add_image_size( 'slider-image', 1600, 800, true );
add_image_size( 'category-thumbnails', 220, 500 );

Комментарии 36

  • Александр Борисов15 мая 2014 в 18:05 #

    Привет. А как вообще отключить, чтобы не появлялись 2 доп.изображения, а была только одна?

    • Миша19 мая 2014 в 07:05 #

      Привет!
      сорри за долгий ответ,
      нужно вставить это в functions.php:

      function true_remove_default_sizes( $sizes ) {
      	unset( $sizes['thumbnail']);
      	unset( $sizes['medium']);
      	unset( $sizes['large']);
      	return $sizes;
      }
      add_filter('intermediate_image_sizes_advanced', 'true_remove_default_sizes')
      • Александр Борисов29 мая 2014 в 09:05 #

        Большое спасибо! Я сделал все проще. Настройки - медиафайлы все по нулям ))

        Странно только почему появляются attachment и attachment_id которые иногда заносятся в выдачу.

        • Миша29 мая 2014 в 13:05 #

          Да, я тоже так делал, но в посл. время почему-то у меня всё равно гененировались лишние копии :)

  • Daria27 мая 2014 в 22:05 #

    Здравствуйте, Миша! Правильно ли я поняла вас: если я вставлю рекомендованную вами функцию в functions.php, тогда у меня картинки перестанут множиться? При этом будет даже неважно, что выставлено в админке в настройке медиафайлов? Будет помещаться только одна картинка с нужными мне размерами? Но а если вдруг мне понадобится из них составить простенькую галерею, как позволяет сделать вордпресс, все ли будет в порядке, какие размеры у ее миниатюрок будут, откуда они возьмутся?
    Спасибо за ответ

    • Миша28 мая 2014 в 07:05 #

      Добрый день!
      Вы имеете ввиду мой последний комментарий? Да, вы всё поняли правильно. Да, абсолютно неважно, что будет в настройках медиафайлов.

      Возможно то, как будет выводиться галерея будет зависеть от установленной темы. Как бы там ни было, попробуйте, если же у вас будет использоваться в галерее например размер Миниатюры (thumbnail), то вы можете отключить все остальные размеры, а его не отключать.

      Читайте подробнее тут.

  • Daria28 мая 2014 в 13:05 #

    Большое спасибо вам, Миша! Я все попробую, но если что еще будет не понятно, можно снова к вам обратиться?

  • Daria29 мая 2014 в 12:05 #

    С замиранием сердца ждала вашего разрешения снова к вам обратиться. Есть у меня пара больных вопросов, на которые никак не могу получить ответ, хотя спрашивала у многих. Но это потом, а пока -- звенят фанфары - наконец-то у меня перестали множится картинки. Все как панацею предлагают в настройках медиафайлов наставить нули, но тогда в галереях, которые я делаю в некоторых постах, размеры картинок просто микроскопические. Благодаря вашему совету, я изменила functions.php, рекомендованным плагином за пять минут очистила базу от дублей изображений (а ведь морально готовилась проделать это руками рассчитывая закончить за месяц!) оставила в настройках медиафайлов миниатюры 300 на 200 пикселей, и - жизнь вроде удалась. Но противно то, что иногда мини-фотографии в галерейке выступают за положенные им пределы, хотя в коде страницы - смотрю- их размеры height выставлены правильно. Как бы просит overflow поставить. А куда? В класс gallery-icon? Вот образец моей печали http://www.control-point.ru/skandinavia/korolevstvo-shvetsiya-stokgolm/

    Миша и еще одна заноза у меня - почему у меня не получается увидеть внутри цикла в single.php по команде echo get_post_meta($post->ID, 'description',true) информацию из произв поля, созданную плагином all in one seo pack

    дальше как у классика - кончаю страшно перечесть... Очень-очень-очень буду ждать вашего ответа. Даша

    • Миша29 мая 2014 в 13:05 #

      Вот образец моей печали http://www.control-point.ru/skandinavia/korolevstvo-shvetsiya-stokgolm/

      К сожалению не до конца понял, о чем речь. То, что картинки разных размеров?

      echo get_post_meta($post->ID, ‘description’,true)

      в этом плагине вроде:

      echo get_post_meta( $post->ID, '_aiosp_description', true );

      не уверен на 100%, но по-моему так. Для SEO я бы рекомендовал использовать другой отличный бесплатный плагин «SEO by Yoast».

  • Daria29 мая 2014 в 14:05 #

    Ой, Миша, просто невероятно - вставила _aioseop_description - и все заработало! Теперь сделаю микроразметку для статей где выведу для каждой свой description !!!!!!! Спасибо!!!

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

    Про галерею . Да, я про то что миниатюрки в галерее разных размеров. С тем что есть как бы вертикальные и как бы горизонтальные картинки смириться можно, но то что среди горизонтальных одна подлиннее прочих - совсем не гут .

    • Миша30 мая 2014 в 06:05 #

      предположение такое - зайти в «Настройки > Медиафайлы» и поставить галочку «Обрезать миниатюру точно по размерам».

  • Daria30 мая 2014 в 12:05 #

    Ставила, конечно, ставила, да сейчас стоит - но нет, не помогло...

    • Миша30 мая 2014 в 13:05 #

      а какой размер изображений используется там для вывода? вроде же thumbnail?

      а попробуйте через другой размер вывести картинки, то есть сначала зарегать через:

      add_image_size( $name, $width, $height, true );

      если я вставлю рекомендованную вами функцию в functions.php, тогда у меня картинки перестанут множиться?

      а вы тут все 3 размера отключили?

  • Daria30 мая 2014 в 16:05 #

    Миша, ой, вот как полезно с умным человеком общаться! Мучилась, ничего не понимала, теперь, благодаря вам научилась заглядывать внутрь плагина, предмета для меня сакрального и неприкасаемого, научилась даже смотреть опции в базе данных, залезла даже посмотреть в файл media.php - вот теперь результаты: для галереи берутся данные из опций заданных в медиафайлах в параметрах если их там нет - по умолчанию берутся данные 128px 98px, заданные в media.php, попытка зарегистрировать через add_image_size даже с суровым true не помогла, а если при этом по нулям в настройках медиафайлов, то в галерее видим 128*98. Но тут случилось чудо! Мне стыдно говорить, я пылаю как маков цвет! Но только сейчас я поглядела через отладчик в стили и увидела, что гадит мне неведомо как попавшее в reset таблиц стилей img {max-width: 100%;height: auto;/*width: auto\9; *//* ie8 */} некогда добавленное чтобы сделать изображения эластичными. И теперь я дрожу - руки тянутся удалить это безобразие, и с другой стороны страшно - вдруг что-то посыпется из-за этого.

    • Миша30 мая 2014 в 18:05 #

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

    • Миша30 мая 2014 в 18:05 #

      Вы вставляете галерею через шорткод? Если да, то вот решение:

      Шаг 1.
      вставляем в functions.php:

      $width = 200; // задаем нужное значение ширины
      $height = 200; // задаем нужное значение высоты
      add_image_size( 'gsh', $width, $height, true);

      Шаг 2.
      Нужно пересоздать миниатюры - используем плагин Force Regenerate Thumbnail

      Шаг 3.
      Шорткод должен выглядеть следующим образом:

      [gallery size="gsh"]

      Также не забываем указать в шорткоде те параметры, которые там уже имеются.

  • Daria30 мая 2014 в 18:05 #

    Спасибо вам, Миша! Теперь мне есть о чем подумать. Я была очень рада познакомиться с вами, мне было бы жаль потерять вас на просторах интернета. Буду заходить к вам и вас приглашаю на свой сайт. Может быть мы подружимся?

  • Daria30 мая 2014 в 20:05 #

    Ну что тут скажешь - Миша, вы - несравненны! Вы редкостная умница! Все проверила на тестовом сайте - все идеально. Спасибо вам- воооот такое! Все работает даже с моей закорюкой из таблицы стилей!

    $width = 300; // задаем нужное значение ширины
    $height = 200; // задаем нужное значение высоты
    add_image_size( 'gsh', $width, $height, true);
     
    remove_shortcode('gallery');
    add_shortcode('gallery', 'custom_size_gallery');
    function custom_size_gallery($attr) {
    $attr['size'] = 'gsh';
    return gallery_shortcode($attr);}

    Ура! Я - счастлива. Даша

  • Ольга10 декабря 2014 в 18:12 #

    добрый вечер. Вопрос, возможно,глупый,но всё же - в media.php прописано описание функции add_media_size.
    а куда прописывать вызов?
    мне надо изменить параметры загружаемых фото. в раздел админки "медиафайлы" пожалуйта не посылайте, там можно изменить лишь Максимальные высоту и ширину. спасибо заранее!

  • Виктор16 декабря 2014 в 12:12 #

    А можно сделать для разных рубрик разный размер?

    • Миша17 декабря 2014 в 07:12 #

      Да конечно — для этого регистрируем два размера, а затем, для каждой рубрики делаем либо условие is_category(), либо разные файлы, например category-15.php, category-wordpres.php, где вторая часть названия файла — это ID или ярлык категории.

  • Вадим26 февраля 2015 в 22:02 #

    Подскажите пожалуйста есть тема Accelerate (wordpress.org/themes/accelerate), создал дочернюю тему чтоб не слетали настройки. В нее положил style.css и functions.php. Тема работает, но нужно изменить миниатюры. В стандартном functions.php размер миниатюр:

    		add_image_size( 'featured-blog-large', 720, 300, true );
    		add_image_size( 'featured-blog-small', 230, 230, true );
    		add_image_size( 'featured-service', 600, 330, true );
    		add_image_size( 'featured-recent-work', 365, 365, true );

    А нужно чтоб миниатюра была

    		add_image_size( 'featured-blog-large', 720, 450, true );

    И теперь вопрос, что нужно прописать в дочерний файл functions.php чтоб размеры были 720х450, а не 720х300?

    • Миша27 февраля 2015 в 10:02 #

      Попробуйте:

      function true_after_theme_setup() {
      	add_image_size( 'featured-blog-large', 720, 450, true );
      }
       
      add_action( 'after_setup_theme', 'true_after_theme_setup', 11 );
      • Вадим27 февраля 2015 в 14:02 #
        function true_after_theme_setup() {
        	add_image_size( 'featured-blog-large', 720, 480, false );
        } 
        	add_action( 'after_setup_theme', 'true_after_theme_setup', 11 );

        Миша спасибо большое работает!

        Один вопрос а что означает 11? У меня в файле есть пару функций там где тоже цифра 15, я вот думаю для чего эти цифры в конце.

  • Алексей13 сентября 2015 в 17:09 #

    Здравствуйте Миша! Подскажите пожалуйста! В файле функции прописано

    add_theme_support('post-thumbnails'); // включаем поддержку миниатюр
    set_post_thumbnail_size(200, 100); // задаем размер миниатюрам 200x100
    add_image_size('big-thumb', 250, 250, true); // добавляем еще один размер картинкам 250x250 с обрезкой

    миниатюра вызывается

    <?php if ( has_post_thumbnail() ) the_post_thumbnail('big-thumb'); // выводим миниатюру поста, если есть ?>

    но обрезание картинки не происходит . По вертикали меняется размер на 300рх причем картинка не обрезается а по горизонтали сохраняется пропорция . Что я делаю не так?

  • Алексей14 сентября 2015 в 09:09 #

    Подскажите пожалуйста как формируются размеры миниатюр стандартной галереи вордпресса?Где можно задать их размеры?

    • Миша15 сентября 2015 в 07:09 #

      Насколько я знаю, при вставке галереи их можно указать. Или я неправильно понял вопрос?

  • Алексей15 сентября 2015 в 13:09 #

    интересует образуются ли миниатюры (если да то где можно задать им размеры) когда вставляем галерею

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Миша: Да, точно)

  • Владимир: и на третьей строке не хватает скобки ) закрывающей if :)

  • Миша: Добрый вечер! Рекомендую получить ID пользователя через функцию get_current_user_id().

  • Дмитрий: Миша, подскажите пожалуйста, я использую такой редирект, но он не срабатывает: add_action( 'template_redirect', funct...

  • Миша: Ну как не определена - это аргумент функции. Или я просто вас не до конца понимаю.