В WordPress хук attachment_link
позволяет изменить ссылку на вложение, например, на медиафайл из библиотеки WordPress. Этот хук применяется в функции get_attachment_link()
и предоставляет возможность динамически управлять ссылками на медиафайлы, что полезно для улучшения навигации или реализации кастомных ссылок на файлы. В данной статье мы рассмотрим параметры, которые принимает хук, и приведем несколько примеров его использования.
apply_filters( ‘attachment_link’, string $link, int $post_id )
Хук attachment_link
используется для фильтрации постоянной ссылки (permalink) на вложение, т.е. медиафайл. Это позволяет разработчикам изменять поведение ссылки, например, сделать её ведущей непосредственно к файлу изображения, а не к странице вложения.
Параметры
$link
(строка): Ссылка на страницу вложения. Это значение может быть изменено с помощью хуков.$post_id
(целое число): ID вложения, что позволяет определять, к какому медиафайлу принадлежит ссылка.
Пример #1: Замена ссылки на страницу вложения ссылкой на сам файл
В этом примере мы заменим стандартную ссылку на страницу вложения на ссылку, ведущую к самому файлу. Это удобно, если вы хотите, чтобы пользователи сразу переходили к медиафайлу (например, к изображению или документу), минуя страницу вложения.
add_filter( 'attachment_link', 'custom_attachment_direct_link', 10, 2 );
function custom_attachment_direct_link( $link, $post_id ) {
return wp_get_attachment_url( $post_id ); // Получаем URL файла и возвращаем его вместо страницы вложения
}
После добавления этого кода в functions.php
, при нажатии на вложение, пользователь будет перенаправляться напрямую на файл, а не на его страницу.
Пример #2: Условное изменение ссылки в зависимости от типа вложения
В следующем примере мы изменим поведение ссылки только для изображений, оставляя стандартную ссылку для всех остальных типов медиафайлов.
add_filter( 'attachment_link', 'conditional_attachment_link', 10, 2 );
function conditional_attachment_link( $link, $post_id ) {
if ( wp_attachment_is_image( $post_id ) ) {
// Если вложение - изображение, то направляем на сам файл
return wp_get_attachment_url( $post_id );
}
return $link; // Оставляем стандартную ссылку для других типов вложений
}
Теперь изображения будут вести непосредственно к файлам, а для других типов вложений (например, аудио или видео) останется стандартная ссылка на страницу вложения.
Пример #3: Добавление параметра к ссылке на вложение
Если вы хотите добавить дополнительные параметры к URL вложения, это можно сделать следующим образом. Например, можно добавить ?source=media
для отслеживания трафика или использования в аналитике.
add_filter( 'attachment_link', 'add_query_param_to_attachment_link', 10, 2 );
function add_query_param_to_attachment_link( $link, $post_id ) {
return add_query_arg( 'source', 'media', $link ); // Добавляем параметр source=media к ссылке
}
После этого ссылки на страницы вложений будут содержать дополнительный параметр ?source=media
, что может быть полезно для маркетинга или аналитики.
Пример #4: Замена ссылки для определенного ID вложения
Вы также можете настроить ссылку на конкретное вложение по его ID. Например, если у вас есть важный файл, который должен вести на внешний URL, а не на страницу вложения.
add_filter( 'attachment_link', 'specific_attachment_custom_link', 10, 2 );
function specific_attachment_custom_link( $link, $post_id ) {
if ( $post_id === 123 ) { // Замените 123 на нужный ID вложения
return 'https://example.com/special-attachment-page'; // Устанавливаем кастомный URL
}
return $link;
}
В этом примере вложение с ID 123 будет перенаправляться на указанный URL, тогда как все остальные вложения будут использовать стандартные ссылки.
Заключение
Хук attachment_link
предоставляет множество возможностей для настройки ссылок на вложения в WordPress. Используя его, вы можете изменять поведение ссылок на уровне сайта или для отдельных вложений, добавлять параметры для аналитики, или направлять пользователей напрямую к файлам. Этот хук отлично подходит для создания более гибкой и контролируемой навигации для пользователей вашего сайта.