Функция add_image_size не работает даже после регенерации миниатюр
Я сталкиваюсь с очень раздражающей проблемой, когда add_image_size()
просто не работает вообще (фактически, я никогда не видел, чтобы она работала раньше). Под "не работает" я имею в виду, что изображение не изменяет размер / не обрезается (если я уберу свои CSS width / height, миниатюра будет точно такого же размера, как при загрузке).
У меня есть:
add_theme_support( 'post-thumbnails' )
add_image_size( 'small-thumb', 60, 60, true )
the_post_thumbnail( 'small-thumb' )
- И что самое важное, да, я регенерировал миниатюры около 50 раз после изменения
add_image_size()
, и это не работает.
Теперь у меня есть вопрос, связанный с этой проблемой: Влияют ли CSS-стили, такие как max-width
/ max-height
/ width
/ height
или что-либо еще на функции миниатюр WordPress?
Кто-нибудь знает, что еще можно попробовать для решения этой проблемы?
Спасибо

Есть несколько моментов, которые нужно проверить.
Во-первых, убедитесь, что 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 только управляет тем, как миниатюра отображается на фронтенде.

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

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

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

Еще одна вещь, которую стоит проверить, если ожидаемые изображения не генерируются - это наличие сгенерированных размеров изображений.
Проверьте свою директорию загрузок. Если там нет нескольких вариантов изображений (как показано ниже)
- image.jpg
- imagex150x150.jpg
- imagex300x300.jpg
Тогда возможно у вас не установлена библиотека GD.
if ( !extension_loaded('gd') || !function_exists('gd_info') ) {
echo 'Библиотека GD не установлена';
} else {
echo 'Библиотека GD доступна';
}
Если библиотека GD не установлена, вам необходимо установить ее, чтобы WordPress мог создавать дополнительные размеры изображений.

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