wp_get_attachment_image_src() и пользовательские размеры изображений

6 апр. 2014 г., 20:00:16
Просмотры: 40.9K
Голосов: 5

Как указано на этой странице, wp_get_attachment_image_src() принимает только встроенные размеры, такие как thumbnail, medium, large или full.

Как получить такое же возвращаемое значение с пользовательскими размерами, которые вы добавляете с помощью add_image_sizes()?

0
Все ответы на вопрос 1
13

Вы неправильно читаете Кодекс. Функция wp_get_attachment_image_src() прекрасно работает с пользовательскими размерами изображений.

Доказательство концепции:

// скопировано из Кодекса
// https://codex.wordpress.org/Function_Reference/add_image_size
if ( function_exists( 'add_image_size' ) ) { 
    add_image_size( 'category-thumb', 300, 9999 ); // 300 пикселей в ширину (и неограниченная высота)
    add_image_size( 'homepage-thumb', 220, 180, true ); // (обрезанное)
}

Добавьте изображение в Медиабиблиотеку, затем...

$image_attributes = wp_get_attachment_image_src( 28, 'category-thumb' ); 
var_dump($image_attributes);

Вы заметите, что возвращается изображение (примерно) 300x9999 — то есть 300 в ширину и соответствующая масштабированная высота.

6 апр. 2014 г. 20:19:27
Комментарии

спасибо, но это не доказательство, я уже использую var_dump для проверки. Ничего не получаю, кроме оригинальных миниатюр. Полагаю, истина где-то в другом месте, я использую wp beta 3.9, не знаю, имеет ли это значение

JMau JMau
6 апр. 2014 г. 20:26:02

У меня работает, и я не вижу ничего в исходном коде, что ограничивало бы размеры. Уверен, проблема не там, где вы думаете. Проверено на 3.9.

s_ha_dum s_ha_dum
6 апр. 2014 г. 20:35:24

Думаю, вы правы, я тоже этого не вижу. $size является строкой.

JMau JMau
6 апр. 2014 г. 20:41:04

Но странно, что у меня это работает только со встроенными размерами!

JMau JMau
6 апр. 2014 г. 21:18:00

Здесь какая-то другая ошибка. Попробуйте с темой из стандартного набора и без плагинов.

s_ha_dum s_ha_dum
6 апр. 2014 г. 21:23:27

Я добавляю +1 к вашему ответу, потому что думаю, что вы правы, но проблема все еще остается. Когда я делаю var_dump, четвертый элемент массива возвращает false oO

JMau JMau
7 апр. 2014 г. 01:11:13

Четвертый элемент — "[3] => boolean: true, если $url является измененным размером изображения, и false, если это оригинал." Я не понимаю, почему это важно. Во-вторых, я верю, что вы сталкиваетесь с описанной проблемой, но это не отвечает на заданный вопрос, и нет возможности предположить, что еще может вызывать неполадки.

s_ha_dum s_ha_dum
7 апр. 2014 г. 01:16:03

Я уже знаю это, потому что сосредоточен именно на этом элементе массива, но спасибо. Суть в том, что параметр $size функции wp_get_attachment_image_src() в моем коде является переменной.

JMau JMau
7 апр. 2014 г. 01:40:11

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

s_ha_dum s_ha_dum
7 апр. 2014 г. 01:41:44

Я думал, что это баг в WP, прежде чем спросить здесь ^^

JMau JMau
7 апр. 2014 г. 01:42:40

Ваш вопрос на самом деле не имеет никакого отношения к конкретному содержимому этого четвертого элемента массива.

s_ha_dum s_ha_dum
7 апр. 2014 г. 01:44:18

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

JMau JMau
7 апр. 2014 г. 01:46:30

Не забудьте перегенерировать все миниатюры, чтобы новый пользовательский размер вступил в силу. Вы можете сделать это с помощью кода или плагина "Regenerate thumbnails".

Floris Floris
16 сент. 2019 г. 10:42:43
Показать остальные 8 комментариев