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