get_canonical_url
Позволяет изменить каноническую ссылку выводимую WordPress для постов.
Метатег сanonical
используется поисковыми системами только в одном случае: когда поисковая система, обнаружила дублирующий контент, и при этом у неё не достаточно своих оснований для выбора каноничного адреса. Во всех других случаях, canonical игнорируется.
Использование
add_filter( 'get_canonical_url', 'wp_kama_get_canonical_url_filter', 10, 2 ); /** * Function for `get_canonical_url` filter-hook. * * @param string $canonical_url The post's canonical URL. * @param WP_Post $post Post object. * * @return string */ function wp_kama_get_canonical_url_filter( $canonical_url, $post ){ // filter... return $canonical_url; }
- $canonical_url(строка)
- Каноническая ссылка поста.
- $post(WP_Post)
- Объект поста.
Примеры
#1 Изменим каноническую ссылку поста
Допустим мы изменили ЧПУ записей и добавили в правила параметр запроса post_subpage
, который содержит в себе дочернюю страницу текущей записи.
Например:
/my-post/
- URL записи.
/my-post/gallery/
- URL статичной дочерней страницы записи.
По умолчанию для таких нестандартных записей метатег canonical будет такой же как для записи. Но это ведь отдельные страницы с отличающимся контентм и каноническая ссылка также должна отличаться.
Чтобы у таких страниц была своя каноническая ссылка создадим следующий хук:
add_filter( 'get_canonical_url', 'subpages_canonical', 10, 2 ); function subpages_canonical( $canonical_url, $post ){ if( $subpage = get_query_var('post_subpage') ){ $canonical_url = user_trailingslashit( rtrim( get_permalink( $post ), '/' ) ."/$subpage" ); } return $canonical_url; }
#2 Изменим каноническую ссылку пагинаций на главной странице
Нужно чтобы все ссылки пагинации на домашней странице вели на основную страницу.
Т.е. указем главную страницу https://example.com
как каноническую для всех ссылок вида:
https://example.com/page/1 https://example.com/page/2 https://example.com/page/3
// set home_page canonical for each home pagination link add_filter( 'get_canonical_url', 'wp_kama_get_canonical_url_filter', 10, 2 ); function wp_kama_get_canonical_url_filter( $canonical_url, $post ){ if( is_front_page() && is_paged() ){ return home_url(); } return $canonical_url; }
#3 Установим канонический УРЛ для записи из произвольного поля
Допустим у нас есть мета-поле поста, canonical_url
в котором мы указываем произвольный канонический УРЛ (если нужно). Чтобы это поле начало работать нужно добавить такой хак:
// change post canonical url if it specified for a post in post meta field add_filter( 'get_canonical_url', 'wpkama_change_post_canonical_url', 10, 2 ); function wpkama_change_post_canonical_url( $canonical_url, $post ) { $url = get_post_meta( $post->ID, 'canonical_url', true ); if ( $url ) { $canonical_url = $url; } return $canonical_url; }
Список изменений
С версии 4.6.0 | Введена. |
Где вызывается хук
return apply_filters( 'get_canonical_url', $canonical_url, $post );