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».

Источник: misha.blog

Миша Рудрастых

Путешествует по миру и рассказывает всем о WordPress лично, у себя в блогах и на курсах в Санкт-Петербурге. Умеет просто объяснять сложные вещи, делает это красиво. Организовывает неплохие WordCamp's, но совсем не умеет слушать чужие доклады.

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

%d такие блоггеры, как: