Почему the_post_thumbnail выводит полноразмерные изображения после активации поддержки после эскизов?

Я имею в виду:

add_action( 'after_setup_theme', 'thumbs_setup' ); function thumbs_setup() { add_theme_support( 'post-thumbnails' ); } 

Мои настройки мультимедиа – 150×150 пикселей на миниатюрах, но теперь the_post_thumbnail() будет выводить полноразмерное изображение. Зачем?

Я вижу, что единственный способ заставить the_post_thumbnail() действительно выводить размер эскиза – это явно передать его:

the_post_thumbnail('thumbnail')

Зачем?

the_post_thumbnail , к сожалению, назван, потому что он предлагает небольшое изображение, но на самом деле относится к изображенному изображению сообщения. Добавление поддержки для него просто делает поле «Featured image» доступным в вашем редакторе сообщений.

Теперь, если вы посмотрите на исходный код , вы увидите, что если при вызове the_post_thumbnail не задан the_post_thumbnail , размер определяется как post-thumbnail . Однако это не имя миниатюры по умолчанию, сгенерированного для каждого изображения, это thumbnail . Размер изображения, называемый «пост-эскиз», по умолчанию не указан. В результате WP будет использовать полное изображение.

Существует несколько способов обойти это, но самым легким будет использование фильтра, доступного в get_the_post_thumbnail , функции, которая используется the_post_thumbnail . Вы можете перенаправить вызов по умолчанию из «post-thumbnail» в «tumbnail» следующим образом:

 add_filter ('post_thumbnail_size','wpse275569_post_thumbnail_size'); function wpse275569_post_thumbnail_size ($size) { if ($size == 'post-thumbnail') $size = 'thumbnail'; return $size; } 

Я думаю, что добавление поддержки «эскизов» также добавляет новый тип размера: «пост-эскиз». Но «пост-эскиз» не является «большим пальцем» или «миниатюрным», это новый, другой тип. Кроме того, the_post_thumbnail() если the_post_thumbnail() без параметров, выведет размер «пост-миниатюры» вместо размера «большой».

«thumb» (или «thumbnail») устанавливаются с помощью панели управления admin, а «post-thumbnail» – нет.

Поскольку размер «после эскиза» еще не установлен, то the_post_thumbnail() не знает, какой размер использовать, и, таким образом, он выведет полное изображение.

Чтобы установить размер «пост-эскиза», вы должны использовать стандартное значение « add-image-size() передающее« пост-эскиз »в качестве имени, или просто используйте set_post_thumbnail_size() .