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 );