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

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

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 />. Т.е. нужно, чтобы выводилась сразу картинка.

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

1
2
3
4
5
6
7
8
9
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-я строчка в коде изменится следующим образом:

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

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

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Миша: Добрый день! В принципе вам только немного нужно доработать код из этого поста - категории уже есть, цена - это и так...

  • eveniy: Добрый день Михаил, подскажите на примере как добавить свои произвольные поля в в вашу форму фильтрации: Я так понимаю...

  • Миша: Отлично! )

  • Дмитрий: сам разобрался: в настройках кастомного типа записи недавно оптимизировал настройки и переоптимизировал: в аргументе 'ta...

  • Дмитрий: У меня по какой-то причине пропало отображение (как в колонке меню слева, так и метабокс в записях ) раздела рубрик для...