Функция get_attachment_link()
в WordPress позволяет получить постоянную ссылку на страницу медиафайла (вложения). Это полезно для создания ссылок на страницы, где отображаются подробности медиафайлов, таких как изображения, видео или другие типы вложений.
get_attachment_link( int|WP_Post $post = null, bool $leavename = false ): string
Эта функция возвращает ссылку на страницу медиафайла. Если на сайте включены «человеко-понятные» ЧПУ (перманентные ссылки), то URL будет в формате:
http://example.com/slug_of_post/attachment_name
Если ЧПУ отключены, URL будет вида:
http://example.com/?attachment_id=ID
Вы также можете управлять тем, будет ли сохранено имя страницы, с помощью параметра $leavename
.
Параметры
- $post (int|WP_Post, необязательный): ID вложения или объект
WP_Post
. По умолчанию используется глобальный$post
. - $leavename (bool, необязательный): Указывает, следует ли оставить имя страницы в URL. По умолчанию
false
.
Возврат
- Возвращает строку: URL страницы медиафайла.
Пример 1: Получение ссылки на страницу медиафайла
Предположим, у нас есть вложение с ID 210. Мы можем получить ссылку на страницу этого вложения следующим образом:
$attachment_id = 210;
$attachment_link = get_attachment_link($attachment_id);
echo '<a href="' . esc_url($attachment_link) . '">Перейти к медиафайлу</a>';
Этот код выведет гиперссылку на страницу медиафайла с ID 210.
Пример 2: Использование функции для разных типов вложений
Допустим, у нас есть несколько типов медиафайлов (изображения, аудио) с разными ID. Вот пример кода, который выводит ссылки на страницы медиафайлов:
$media_ids = array(305, 402, 503); // ID разных медиафайлов
foreach ($media_ids as $id) {
$media_link = get_attachment_link($id);
echo '<a href="' . esc_url($media_link) . '">Посмотреть файл с ID ' . $id . '</a><br>';
}
Этот код создаст список ссылок для вложений с разными ID.
Пример 3: Отображение прикрепленных изображений как списка
В этом примере мы выведем изображения, прикрепленные к посту с ID 515, в виде списка:
$post_id = 515;
$args = array(
'post_type' => 'attachment',
'numberposts' => -1,
'post_status' => 'inherit',
'post_parent' => $post_id
);
$attachments = get_posts($args);
if ($attachments) {
echo '<ul>';
foreach ($attachments as $attachment) {
$attachment_link = get_attachment_link($attachment->ID);
echo '<li><a href="' . esc_url($attachment_link) . '">' . esc_html($attachment->post_title) . '</a></li>';
}
echo '</ul>';
}
Этот код создаст список всех вложений (например, изображений), прикреплённых к указанному посту.
Пример 4: Получение ссылки на вложение без поста
Иногда медиафайл может не быть прикреплён к конкретному посту. В таком случае мы можем просто получить его ссылку:
$attachment_id = 327;
echo get_attachment_link($attachment_id);
Если файл не прикреплён к посту, результатом будет прямая ссылка на страницу вложения.
Пример 5: Получение ссылки с сохранением имени страницы
Если вам нужно сохранить название страницы в URL (например, для SEO или других целей), вы можете установить параметр $leavename
в true
:
$attachment_id = 401;
$attachment_link = get_attachment_link($attachment_id, true);
echo '<a href="' . esc_url($attachment_link) . '">Ссылка с именем страницы</a>';
Важные замечания
- Если вам нужен URL на сам файл, а не на его страницу, используйте функцию
wp_get_attachment_url()
. - Функция может использоваться как внутри цикла WordPress, так и вне его.
- Вы можете изменить результат функции с помощью фильтра
attachment_link
.
Заключение
Функция get_attachment_link()
— это удобный способ получения ссылок на страницы медиафайлов в WordPress. Она особенно полезна для работы с вложениями, такими как изображения, видео или документы, и позволяет гибко управлять отображением этих ссылок на страницах вашего сайта.