Как использовать размер миниатюры изображения, если я использую только src для получения изображения.

Вопрос или проблема

У меня есть пользовательское поле для изображения, и я использую его таким образом:

<?php $item_img = get_sub_field('image'); ?>
<img src="https://wordpress.stackexchange.com/questions/278286/<?php echo $item_img ?>" />

Но я хочу использовать миниатюру изображения, установленную на 150×150 в WordPress.

Как мне это сделать с такой настройкой?

Мне нужно установить пользовательский add_image_size() или в WordPress уже есть дублированные изображения миниатюры?

Поскольку вы используете get_sub_field(), я предполагаю, что вы находитесь внутри have_rows() (повторитель), в теории это должно работать так:

$image = get_sub_field('image');
<img src="https://wordpress.stackexchange.com/questions/278286/<?php echo $image["url']; ?>" alt="https://wordpress.stackexchange.com/questions/278286/<?php echo $image["alt'] ?>" />

И это то, что вы можете получить:

$image['url'] //это полное изображение
echo $image['sizes']['medium']; //среднее изображение
echo $image['sizes']['thumbnail']; //миниатюрное изображение
echo $image['sizes']['yourcustomsize']; //изображение пользовательского размера

Другой способ – использовать:

$size="full"; // (миниатюра, средний, большой, полный или пользовательский размер)
echo wp_get_attachment_image( $imageID, $size );

Теперь, если это не работает для вас, это означает, что ваши изображения все еще сохранены только как URL, а не как объект. Попробуйте заново сохранить пост/страницу, где загружено изображение, или, если у вас есть набор изображений, вам может понадобиться использовать другой плагин для повторной загрузки и создания sizes.

Вы всегда можете отредактировать поле в Пользовательские поля > Группы полей, чтобы вернуть ID. Затем вы можете использовать его так:

<img src="https://wordpress.stackexchange.com/questions/278286/<?php echo wp_get_attachment_image_src( get_sub_field("image' ), 'thumbnail' )[0]; ?>">

Если это не под контролем, и поле установлено так, чтобы возвращать только URL, вы можете установить 2-й аргумент get_sub_field() в false, чтобы получить ID, поскольку ACF всегда сохраняет ID независимо от этой настройки, и установка этого в false означает, что вы получаете сырое значение.

Так что это будет:

<?php $image_id = get_sub_field( 'image', false ); ?>
<img src="https://wordpress.stackexchange.com/questions/278286/<?php echo wp_get_attachment_image_src( $image_id,"thumbnail' )[0]; ?>">

Ответ или решение

Использование миниатюр изображений в WordPress с помощью src

Ваша задача — использовать миниатюры изображений в WordPress, когда вы работаете с методом get_sub_field(), который, судя по всему, возвращает URL изображения. Для достижения вашей цели важно понимать, как WordPress обрабатывает изображения и их размеры.

Понимание структуры данных

Когда вы загружаете изображение в WordPress, система создает несколько его версий разных размеров, включая миниатюры (по умолчанию размером 150×150 пикселей). Однако, если get_sub_field() возвращает только URL изображения, вам стоит изменить способ, которым вы получаете эти данные.

Изменение конфигурации поля

  1. Настройка в ACF: Перейдите в настройки пользовательских полей (Custom Fields) в области управления WordPress. Убедитесь, что поле, которое вы используете для загрузки изображений, настроено на возвращение ID вместо URL. Это позволит вам получить доступ ко всем доступным размерам изображений.

  2. Изменение кода: Скорректируйте ваш код следующим образом:

<?php $image_id = get_sub_field('image', false); ?>
<img src="<?php echo wp_get_attachment_image_src($image_id, 'thumbnail')[0]; ?>" alt="<?php echo get_post_meta($image_id, '_wp_attachment_image_alt', true); ?>" />

Объяснение кода:

  • get_sub_field('image', false): Здесь мы указываем второй параметр false, чтобы получать ID, а не URL.
  • wp_get_attachment_image_src($image_id, 'thumbnail'): Эта функция возвращает массив, содержащий URL миниатюры, ее ширину и высоту. Мы обращаемся к первому элементу массива [0], чтобы получить URL.
  • get_post_meta($image_id, '_wp_attachment_image_alt', true): Эта функция извлекает текст ALT для изображения, что полезно для SEO и доступности.

Работа с разными размерами изображений

Если задача требует использования других размеров изображений, вы можете просто заменить 'thumbnail' на нужный размер, например, 'medium' или 'large'. Также можно создать собственные размеры с помощью функции add_image_size() в файле functions.php вашей темы.

add_image_size('custom-size', 300, 200, true);

Убедитесь, что размеры изображений созданы

Если предыдущие методы не сработали, возможно, изображения еще не сохранены в нужных размерах. Попробуйте:

  • Пересохранить пост или страницу, на которой загружены изображения.
  • Использовать плагин, такой как Regenerate Thumbnails, для создания отсутствующих размеров миниатюр.

Заключение

Использование миниатюр изображений в WordPress — это гибкий подход, который может быть дополнительно настроен под ваши нужды. Изменив логику получения изображения и настроив пользовательское поле, вы сможете легко получать нужные размеры изображений. Убедитесь, что ваши изображения оптимизированы и корректно отображаются для улучшения пользовательского опыта и SEO.

Оцените материал
Добавить комментарий

Капча загружается...