Функция add_image_size не работает даже после регенерации миниатюр

21 апр. 2014 г., 09:41:40
Просмотры: 25.1K
Голосов: 3

Я сталкиваюсь с очень раздражающей проблемой, когда add_image_size() просто не работает вообще (фактически, я никогда не видел, чтобы она работала раньше). Под "не работает" я имею в виду, что изображение не изменяет размер / не обрезается (если я уберу свои CSS width / height, миниатюра будет точно такого же размера, как при загрузке).

У меня есть:

  1. add_theme_support( 'post-thumbnails' )
  2. add_image_size( 'small-thumb', 60, 60, true )
  3. the_post_thumbnail( 'small-thumb' )
  4. И что самое важное, да, я регенерировал миниатюры около 50 раз после изменения add_image_size(), и это не работает.

Теперь у меня есть вопрос, связанный с этой проблемой: Влияют ли CSS-стили, такие как max-width/ max-height/ width / height или что-либо еще на функции миниатюр WordPress?

Кто-нибудь знает, что еще можно попробовать для решения этой проблемы?

Спасибо

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

Вы используете the_post_thumbnail внутри цикла? У текущей записи есть избранное изображение? Можете показать ваш код?

cybmeta cybmeta
21 апр. 2014 г. 10:00:31
Все ответы на вопрос 3
3

Есть несколько моментов, которые нужно проверить.

Во-первых, убедитесь, что add_theme_support( 'post-thumbnails' ) загружается перед add_image_size( 'small-thumb', 60, 60, true )

Вы всегда можете привязать все через функцию к хуку after_setup_theme. Я обычно добавляю это в свою функцию настройки темы:

function wpse_setup_theme() {
   add_theme_support( 'post-thumbnails' );
   add_image_size( 'small-thumb', 60, 60, true );
}

add_action( 'after_setup_theme', 'wpse_setup_theme' );

Помимо этого, все должно работать, если вы правильно вызываете миниатюру записи в цикле.

Отвечая на ваш вопрос:

Влияет ли CSS-стилизация, такая как max-width/max-height/width/height или что-либо еще, на функции работы с миниатюрами в WordPress?

Нет, не влияет. CSS только управляет тем, как миниатюра отображается на фронтенде.

21 апр. 2014 г. 10:06:38
Комментарии

Я попробую это сделать. Я заметил, что мои функции add_theme_support() и add_image_size() находятся в двух разных функциях. Должна ли функция add_image_size() вызываться с использованием этого хука (вместе с add_theme_support())? Имеет ли значение, если она вызывается в другом месте?

Bobby Bobby
21 апр. 2014 г. 10:14:50

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

Pieter Goosen Pieter Goosen
21 апр. 2014 г. 10:17:18

Теперь я понимаю логику. Наконец-то я вижу, в чём проблема. Автор темы поместил несколько add_image_size() в функцию, которую он не вызвал (не подключил к хуку после настройки темы). Ого... Большое спасибо, Pieter, теперь всё работает. Думаю, отныне я буду придерживаться вашего подхода.

Bobby Bobby
21 апр. 2014 г. 10:20:02
0

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

Проверьте свою директорию загрузок. Если там нет нескольких вариантов изображений (как показано ниже)

  • image.jpg
  • imagex150x150.jpg
  • imagex300x300.jpg

Тогда возможно у вас не установлена библиотека GD.

if ( !extension_loaded('gd') || !function_exists('gd_info') ) {
    echo 'Библиотека GD не установлена';
} else {
    echo 'Библиотека GD доступна';
}

Если библиотека GD не установлена, вам необходимо установить ее, чтобы WordPress мог создавать дополнительные размеры изображений.

7 дек. 2016 г. 16:39:47
0

В моем случае возникла ошибка при регенерации изображения, потому что оно было слишком большим! В результате система не создала уменьшенные версии. Это можно заметить, если плагин Regenerate Thumbnails выполняется слишком быстро для данного изображения И при проверке через FTP видно, что уменьшенные версии отсутствуют. В таком случае просто скачайте изображение, уменьшите его размер вдвое, удалите оригинал из медиатеки, затем загрузите уменьшенную версию и снова запустите регенерацию миниатюр. После этого все должно заработать.

Кстати: проблемное изображение имело размеры 7594x3744@24bit@684kb

18 мая 2016 г. 11:44:21