Всем привет! Чтобы добавить запись типа 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 '<link rel="canonical" href="'.remove_args($url).'" />'; } } add_action('wp_head', 'print_canonical_link'); |
Подробности для непосвящённых: функция print_canonical_link()
выводит запись вида
<meta rel="canonical" href="url" />
во время вызова штатной функции wp_head()
, что очень уважают поисковые системы, но это неточно. А функция remove_args()
удаляет GET аргументы вида «?key=value» из URL. Критика, замечания, пожелания приветствуются.