user_trailingslashit
Позволяет удалить/добавить слэш на конце строки (/
) у ссылок (URL), обрабатываемых функцией user_trailingslashit().
Использование
add_filter( 'user_trailingslashit', 'wp_kama_user_trailingslashit_filter', 10, 2 ); /** * Function for `user_trailingslashit` filter-hook. * * @param string $url URL with or without a trailing slash. * @param string $type_of_url The type of URL being considered. Accepts 'single', 'single_trackback', 'single_feed', 'single_paged', 'commentpaged', 'paged', 'home', 'feed', 'category', 'page', 'year', 'month', 'day', 'post_type_archive'. * * @return string */ function wp_kama_user_trailingslashit_filter( $url, $type_of_url ){ // filter... return $url; }
- $string(строка)
- URL с или без закрывающего слэша (
/
). - $type_of_url(строка)
Тип URL, который обрабатывается. Может быть:
single
single_trackback
single_feed
single_paged
commentpaged
paged
home
feed
category
page
year
month
day
post_type_archive
Примеры
#1 Как удалить конечный слэш у страниц (записей типа page)
Допустим мы создали пользовательский тип записи, настроили в нем slug, но слеш в конце ссылки на статью не убирается, например: example.com/post_pro_kenguru/
.
Наличие слэша в конце определяется главным правилом ЧПУ в настройках, если там есть слэш в конце, то он автоматом есть для всех типов записей. Это поведение можно изменить через этот хук:
Этот пример показывает как удалить слэш у записей типа page. По аналогии можно сделать с любым типом записи:
// Удалим слэш на конце, если нужно. Если слэш есть в структуре ЧПУ, то он будет добавляться и к постоянным страницам. add_filter( 'user_trailingslashit', 'no_page_slash', 70, 2 ); function no_page_slash( $string, $type ){ global $wp_rewrite; if( 'page' === $type && $wp_rewrite->using_permalinks() && $wp_rewrite->use_trailing_slashes ) $string = untrailingslashit( $string ); return $string; }
Для другого типа записи нужно нужно заменить 'page' === $type
на название вашего типа записи.
Список изменений
С версии 2.2.0 | Введена. |
Где вызывается хук
return apply_filters( 'user_trailingslashit', $url, $type_of_url );