Хук user_trailingslashit
в WordPress позволяет кастомизировать наличие или отсутствие слэша (/
) в конце URL. Этот фильтр используется в функции user_trailingslashit()
, которая автоматически добавляет или удаляет конечный слэш в зависимости от настроек структуры ссылок. В данной статье рассмотрим параметры хука и примеры его использования.
apply_filters( 'user_trailingslashit', string $url, string $type_of_url );
Параметры
- $url (строка) — URL, который может быть с конечным слэшем или без него.
- $type_of_url (строка) — Тип URL, который обрабатывается. Поддерживаемые значения включают:
'single'
,'single_trackback'
,'single_feed'
,'single_paged'
,'commentpaged'
,'paged'
,'home'
,'feed'
,'category'
,'page'
,'year'
,'month'
,'day'
, и'post_type_archive'
.
Пример использования хука
Чтобы использовать хук user_trailingslashit
, его нужно добавить с помощью функции add_filter()
. Рассмотрим основные варианты работы с этим фильтром.
add_filter( 'user_trailingslashit', 'custom_user_trailingslashit', 10, 2 );
/**
* Кастомизация конечного слэша для URL.
*
* @param string $url URL с или без конечного слэша.
* @param string $type_of_url Тип обрабатываемого URL.
*
* @return string
*/
function custom_user_trailingslashit( $url, $type_of_url ) {
// Внесите изменения в $url в зависимости от $type_of_url
return $url;
}
Пример 1: Удаление конечного слэша для страниц (тип записи page
)
Если требуется удалить конечный слэш у всех страниц, например, для более аккуратной структуры URL, можно использовать следующий код:
add_filter( 'user_trailingslashit', 'remove_trailing_slash_for_pages', 70, 2 );
function remove_trailing_slash_for_pages( $url, $type_of_url ) {
global $wp_rewrite;
// Проверяем, что это страница и что включена поддержка ЧПУ
if ( 'page' === $type_of_url && $wp_rewrite->using_permalinks() && $wp_rewrite->use_trailing_slashes ) {
$url = untrailingslashit( $url );
}
return $url;
}
Пример 2: Добавление слэша для архивов по году
В этом примере, если у нас есть архивы по годам и нам нужно добавлять конечный слэш в такие URL, код будет выглядеть так:
add_filter( 'user_trailingslashit', 'add_trailing_slash_for_year_archives', 10, 2 );
function add_trailing_slash_for_year_archives( $url, $type_of_url ) {
if ( 'year' === $type_of_url ) {
$url = trailingslashit( $url );
}
return $url;
}
Пример 3: Удаление слэша для пользовательского типа записи portfolio
Если в вашей теме или плагине используется пользовательский тип записи с названием portfolio
, и необходимо убрать слэш в конце URL этого типа записи, используйте следующий код:
add_filter( 'user_trailingslashit', 'remove_slash_for_portfolio', 10, 2 );
function remove_slash_for_portfolio( $url, $type_of_url ) {
if ( 'post_type_archive' === $type_of_url && strpos( $url, 'portfolio' ) !== false ) {
$url = untrailingslashit( $url );
}
return $url;
}
Пример 4: Кастомизация URL для категории «Новости»
Если нужно настроить ссылки для определённой категории, например, «Новости», чтобы у этих URL всегда был слэш, можно использовать фильтр так:
add_filter( 'user_trailingslashit', 'add_trailing_slash_for_news_category', 10, 2 );
function add_trailing_slash_for_news_category( $url, $type_of_url ) {
if ( 'category' === $type_of_url && strpos( $url, 'news' ) !== false ) {
$url = trailingslashit( $url );
}
return $url;
}
Заключение
Хук user_trailingslashit
предоставляет гибкость для настройки ссылок в WordPress, добавляя или убирая конечный слэш в зависимости от типа URL.