Как получить только URL изображения из the_post_thumbnail()?

12 февр. 2011 г., 09:17:56
Просмотры: 82.6K
Голосов: 34

Я хочу узнать, как получить только URL изображения из the_post_thumbnail(). Стандартный вывод the_post_thumbnail() такой:

<img width="800" height="533" src="http://example.com/wp-content/uploads/2011/02/book06.jpg" class="attachment-post-thumbnail wp-post-image" alt="book06" title="book06" />

Здесь я хочу получить только атрибут src. Как отфильтровать the_post_thumbnail(), чтобы получить только http://example.com/wp-content/uploads/2011/02/book06.jpg?

1
Комментарии

возможный дубликат Получение пути к миниатюре вместо тега изображения

Jan Fabry Jan Fabry
12 февр. 2011 г. 17:55:29
Все ответы на вопрос 6
1
42

Также можно попробовать:

Если у вас только один размер миниатюры:

$thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ) );

Или... если у вас несколько размеров:

$thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), "size" );

Обратите внимание, что wp_get_attachment_image_src() возвращает массив: url, width, height, is_intermediate.

Поэтому если вам нужен только URL изображения:

echo $thumbnail[0];

Ресурсы:

12 февр. 2011 г. 22:17:08
Комментарии

Небольшая подсказка: если вы используете функцию wp_get_attachment_image_src() с указанием размера и хотите получить точный размер миниатюры - используйте название миниатюры, заданное при определении (функция add_image_size()). Если вы используете массив с размерами, WordPress выберет первый подходящий размер изображения, у которого будет подходящая ширина или высота. Таким образом, вы можете получить не то изображение. Пример: вместо 156x98 вы можете получить 120x98, если у вас определены 2 размера изображений: 156x98 и 120x98 (высота одинаковая). Я однажды попался на этом ;)

Marek Tuchalski Marek Tuchalski
16 окт. 2011 г. 18:15:32
0

Начиная с WordPress 4.4, существует эффективная основная функция, которая может обрабатывать это более чистым способом, чем ответы здесь.

Вы можете использовать the_post_thumbnail_url( $size ), которая выведет URL миниатюры записи.

Если же вы хотите получить URL, а не выводить его сразу, можно использовать $url = get_the_post_thumbnail_url( $post_id, $size )

15 сент. 2017 г. 08:14:22
1

Это поможет:

<?php wp_get_attachment_image_src('subgall-thumb'); ?>

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

21 дек. 2012 г. 04:02:04
Комментарии

Не знаю, изменилось ли это с 2012 года, но в 2017 году первый параметр функции wp_get_attachment_image_src должен быть числовым ID вложения, а не размером.

squarecandy squarecandy
12 мая 2017 г. 01:07:31
0

Хорошо, понял, что использовал simplexml_load_string

$dom = simplexml_load_string(get_the_post_thumbnail());
$src = $dom->attributes()->src;
    echo $src;

Другие методы также приветствуются.

12 февр. 2011 г. 10:37:15
0

Пожалуйста, используйте следующий код

<?php get_the_post_thumbnail_url(); ?>

Если этого недостаточно для достижения вашей цели, попробуйте следующий код

<?php $postimages = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ), 'large' );

// Проверяем наличие изображений if ( $postimages ) {

    // Получаем миниатюру записи $postimage = $postimages[0];

} else {} while (have_posts() && $i < 8) : the_post(); echo esc_url( $postimage ); ?>
26 окт. 2018 г. 08:31:34
1
-1

Для быстрого и простого решения добавьте этот код в файл functions.php вашей темы

FUNCTION GET_STRING_BETWEEN($STRING, $START, $END){
    $STRING = " ".$STRING;
    $INI = STRPOS($STRING, $START);
    IF ($INI == 0) RETURN "";
    $INI += STRLEN($START);
    $LEN = STRPOS($STRING, $END, $INI) - $INI;
    RETURN SUBSTR($STRING, $INI, $LEN);
}

Использование внутри цикла даст вам нужный результат

Это вернёт что-то вроде http://example.com/wp-content/uploads/2019/02/toy-story-two-was-ok.jpg

$THE_FEATURED_IMAGE = GET_STRING_BETWEEN(get_the_post_thumbnail(NULL,'post-large'), 'src="', '" class="');

"Внутри цикла" означает, что нужно искать что-то вроде while ( have_posts() ): the_post();.

Вы также можете заменить post-large на любой из предопределённых размеров изображений:

  • post-thumbnail
  • post-medium
  • post-full
17 февр. 2019 г. 02:03:29
Комментарии

это плохо. почему вы используете заглавные буквы для своих кодов?

Raptor Raptor
3 июн. 2020 г. 05:17:23