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


33

Я хочу знать, как получить URL-адрес изображения the_post_thumbnail()

По умолчанию the_post_thumbnail()

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

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

Дай мне знать


Ответы:


41

Вы также можете попробовать:

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

$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];

Ресурсы:


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

2

Это делает трюк:

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

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


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

2

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

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

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


0

Хорошо, получил это с помощью simplexml_load_string

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

Еще один способ приветствуются.


0

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

<?php get_the_post_thumbnail_url(); ?>

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

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

// Check for images if ( $postimages ) {

    // Get featured image   $postimage = $postimages[0];

} else {} while (have_posts() && $i < 8) : the_post(); echo esc_url( $postimage ); ?>

0

Для быстрого и грязного решения, добавьте это в файл 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://foo.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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.