Жесткая обрезка the_post_thumbnail не работает несмотря ни на что
Что бы я ни делал - я не могу заставить работать режим жесткой обрезки в the_post_thumbnail.
Вот что у меня есть:
add_image_size( 'Blog', 300, 300, true );
the_post_thumbnail('Blog');
Я также пробовал:
set_post_thumbnail_size( 300, 300, true );
the_post_thumbnail();
Я пробовал загружать новые изображения и использовать плагин "Regenerate Thumbnails", но все равно безуспешно. Он полностью игнорирует параметр "true" и ведет себя так, как будто установлен "false". Например, вместо изображения размером 300x300 получается 300x238 или что-то подобное.
Кто-нибудь сталкивался с этим? Моя библиотека GD включена..
Спасибо за любую информацию, которую кто-то может предложить =)

Часто проблема заключается в том, что вы не перегенерировали миниатюры для всех своих изображений.
Если вы изменили размеры изображений, вам потребуется перегенерировать миниатюры с помощью этого плагина: http://wordpress.org/extend/plugins/regenerate-thumbnails/

Я не думаю, что это можно сделать из стандартной медиабиблиотеки, верно? Мне пришлось использовать плагин "Regenerate Thumbnails".

Можно предположить, что на вашем сервере не установлены библиотеки GD. Без них вы сможете только загружать файлы, но не сможете обрезать изображения.
Сначала выполните проверку, вызвав phpinfo()
, чтобы убедиться, установлен ли GD.
Установка GD на Linux
Если у вас есть доступ к shell, просто выполните эту команду:
sudo apt-get install php5-gd
После установки GD потребуется перезапустить сервер.
Вот команда для перезапуска Apache:
/etc/init.d/apache2 restart
Shared-хостинг
Если вы используете shared-хостинг, вам нужно связаться с вашим хостинг-провайдером и попросить их установить GD на сервер.
Последний момент
Поддерживает ли ваша тема миниатюры?
add_theme_support('post-thumbnails');

Спасибо большое за ответ, Брайан =)
Я подтвердил, что GD Library установлена на моем сервере (я использую WAMP) - я также столкнулся с той же проблемой на своем сервере и других.
Эта проблема поставила меня в тупик, я застрял на мысли, что это что-то, что делаю я, но все выглядит так, как должно.
Есть еще какие-то идеи? Большое спасибо.

Спасибо за уточнение. У меня действительно включены миниатюры, так как я могу выбрать изображение записи, и оно отображается, просто оно не обрезается жестко до указанных мной размеров. Может ли это конфликтовать с чем-то еще в моей теме? Пока я использую TimThumb для этой задачи, но хотелось бы использовать функции WordPress везде, где это возможно.. Еще раз спасибо =)

Я наконец-то решил эту проблему.
Оказывается, жесткое кадрирование работает, если вы устанавливаете размер изображения внутри функции, подключенной к хуку "after_setup_theme".
Таким образом, следующий код будет работать:
function add_custom_sizes() {
// Добавляем пользовательские размеры изображений с жестким кадрированием
add_image_size( 'portfolio-thumb', 243, 163, true ); // Миниатюра портфолио
add_image_size( 'portfolio-image', 1074, 725, true ); // Основное изображение портфолио
add_image_size( 'available-homes', 500, 279, true ); // Доступные дома
add_image_size( 'idea-thumb', 146, 141, true ); // Миниатюра идей
}
add_action('after_setup_theme','add_custom_sizes');
Это позволит вам получить именно жестко кадрированные изображения указанных размеров при использовании the_post_thumbnail().
Надеюсь, это поможет и другим разработчикам.

У меня была такая же проблема, и решение оказалось в перегенерации миниатюр, как предложил bryceadams (к сожалению, у меня недостаточно баллов, чтобы проголосовать за его ответ).
Важное замечание: изображения должны храниться локально, а не удалённо. Предположительно, миниатюры не создаются для удалённых изображений.

В моём случае эта проблема была вызвана правами доступа к файлам изображений. Я скопировал изображения с одного сервера на другой, забыв изменить владельца файлов. Когда были заданы новые размеры изображений, и я их регенерировал, старые изображения не перезаписывались, как должны были.
Чтобы исправить это, я подключился к своему серверу по SSH, перешёл в папку wp-content/uploads
и сбросил владельца для всех изображений там. Например:
chown -R {web user}:{group} .
Надеюсь, это поможет кому-то.

Вы никогда не получите жестко обрезанное изображение, кроме стандартных размеров.
Вы не найдете этого ответа на форумах WordPress, или если найдете, вам будут месяцами манить морковкой, пока вы не начнете нервничать, не получите бан или пока они тихо не исправят проблему.
Жестко обрезанные изображения доступны только для:
- Миниатюр (Thumbnail)
- Всех остальных размеров, КРОМЕ миниатюр И ВАШИХ ПОЛЬЗОВАТЕЛЬСКИХ РАЗМЕРОВ
То, что невозможно, никогда не показывается в интерфейсе или активно скрывается на форумах (наш бесплатный .org проект — это их .com продукт), даже если вышеуказанные варианты заставляли вас рвать на себе волосы месяцами.
Второй пункт должен звучать как "ВСЕ ОСТАЛЬНЫЕ РАЗМЕРЫ, КРОМЕ ВАШИХ".
Я разрабатываю плагин для этого, и еще кое-что волшебное. Скоро закончу, но мне понадобится помощь с публикацией в библиотеке плагинов, так как меня забанили! хе-хе (за помощь другим с недокументированными (или проигнорированными) багами)

У меня была такая же проблема, и я установил плагин, который позволяет перегенерировать одно/несколько/все изображения. Вот этот плагин: [http://wordpress.org/plugins/regenerate-thumbnails/]
Я не нашел способа сделать это через интерфейс админки WP, кроме как удалить и загрузить изображение заново.
Другой способ, если вы не хотите использовать плагин - сделать это с помощью PHP-функций:
function wp_regenerate() {
include( ABSPATH . 'wp-admin/includes/image.php' );
wp_generate_attachment_metadata( $thumbnail_id, $absolute_path_to_image ); }
add_action('after_setup_theme', 'wp_regenerate');
где $thumbnail_id и $absolute_path_to_image нужно заменить на нужные вам значения.
Спасибо @briceadams и @adriaticiq. Я пока не могу проголосовать за вас, но сделаю это, как только мне будет разрешено.
