wp_get_attachment_url() — возвращает абсолютный URL вложения

Функция возвращает URL вложения с указанным в параметрах ID, например http://ваш-сайт.ru/wp-content/uploads/2013/11/image.png. Если же вложения с указанным ID не существует, возвращает false.

Если мы говорим о изобрежениях и версии WordPress 5.3 и выше, то после того, как оригинал изображения перестал использоваться, как максимально допустимый размер, функция не всегда может вернуть вам оригинал изображения. В этом случае рекомендую обратить внимание на wp_get_original_image_url().

wp_get_attachment_url( $post_id = 0 )
$post_id
(целое число) ID вложения, по умолчанию — текущее вложение из цикла.

Примеры

echo wp_get_attachment_url( 54 );
// http://ваш-сайт.ru/wp-content/uploads/image.png

А следующий пример имеет смысл только в том случае, когда вложение — изображение:

echo '<img src="' . wp_get_attachment_url( 55 ) . '" />';
// <img src="http://ваш-сайт.ru/wp-content/uploads/image.png" />

Фильтр wp_get_attachment_url

Возвращаемый функцией результат проходит через фильтр:

$url = apply_filters( 'wp_get_attachment_url', $url, $post->ID );
$url
(строка) возвращаемый URL вложения
$post->ID
(целое число) ID вложения

Итак, у нас есть URL вложения и его ID, что можно изменить, зная эти параметры?

Давайте предположим, что вложения с ID = 55, 57, 78 — это изображения, URL которых при выводе нужно засунуть в HTML тег <img />. Т.е. нужно, чтобы выводилась сразу картинка.

В итоге будет вот такой код:

function true_img_attachment_url( $url, $post_id ){
	if( in_array( $post_id, array( 55, 57, 78 ) ) ) {
		return '<img src="' . $url . '" />';
	} else {
		return $url;
	}
}
 
add_filter('wp_get_attachment_url', 'true_img_attachment_url', 10, 2);

Кроме того, вы можете добавить проверку того, что вложения с указанными ID — действительно изображения. Для этого мы воспользуемся функцией wp_attachment_is_image(). 2-я строчка в коде изменится следующим образом:

if( in_array( $post_id, array( 55, 57, 78 ) ) && wp_attachment_is_image( $post_id ) ) {

P.S. Под изображениями в данном случае понимаются файлы с расширениями «jpg», «jpeg», «jpe», «gif» и «png».

Миша

В последние годы я долго не знал, что мне делать с сайтом misha.blog, ведь он практически не приносит никакого профита, но недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.