Всем привет! Чтобы добавить запись типа meta rel="canonical" href="url"
к каждой странице вашего сайта на WordPress, добавьте этот код в functions.php
вашей темы:
function remove_args($url) {
$parsed = parse_url($url);
$fragment = '';
if (array_key_exists('fragment', $parsed)) {
$fragment = '#' . $parsed['fragment'];
}
return sprintf("%s://%s%s%s",
$parsed['scheme'],
$parsed['host'],
$parsed['path'] ?? '',
$fragment);
}
function print_canonical_link() {
$url = "";
// Одиночная страница
if (is_single()) {
global $page;
// Пост из нескольких частей
if ($page) {
$url = get_pagenum_link($page);
}
else {
$url = get_permalink();
}
}
// Страница пагинации типа что-то-там/page/N
else if (is_paged()) {
$url = get_pagenum_link(get_query_var('paged'));
}
// Главная страница сайта
else if(is_front_page()) {
$url = get_home_url();
}
// Страницы категории или тега
else if(is_category() || is_tag()) {
$url = get_term_link(get_queried_object());
}
if ($url) {
echo '';
}
}
add_action('wp_head', 'print_canonical_link');
Подробности для непосвящённых: функция print_canonical_link()
выводит запись вида
<meta rel="canonical" href="url" />
во время вызова штатной функции wp_head()
, что очень уважают поисковые системы, но это неточно. А функция remove_args()
удаляет GET аргументы вида «?key=value» из URL. Критика, замечания, пожелания приветствуются.