В WordPress 5.5 отныне добавлена своя XML-карта сайта, т.е теперь присутствует в ядре CMS Вордпресс по умолчанию. Для тех владельцев сайтов, которые стараются использовать как можно меньше сторонних плагинов, появился шанс избавиться ещё от одного плагина. Например, многие работают с Google XML Sitemaps, а значит теперь его можно удалить и работать с родной для WordPress картой .xml.
Стоит ли так сразу избавляться от привычного плагина Карты сайта!? ответ очевиден: каждому решать лично.
Я, к примеру, пока что только тестировал новый функционал ВП, и на данный момент у меня на всех проектах используется плагин. Хотя, на мой взгляд, wp-sitemap.xml вполне себе приличное дополнение. И если вы запускаете новый проект, то, конечно же, новую XML-карту сайта нужно иметь в виду.
Познакомимся подробнее:
- WordPress 5.5 – XML-карта сайта – wp-sitemap.xml
- какие разделы по умолчанию попадают в карту сайта WP
- как отключить карту сайта WordPress
- удаление элементов Карты сайта WordPress, или управление элементами xml-карты
- удалим конкретную таксономию (тип записи/поста) из карты сайта
- отключаем из xml-карты провайдера – ВСЕХ таксономий
- отключаем из xml-карты архивы юзеров (все архивы)
- удалим из xml-карты конкретные отдельные записи
- удалим из wp xml-карты ненужные страницы юзеров
О других обновлениях подробнее описано в статье обновление WordPress 5.5
WordPress 5.5 – вызвал ошибки шаблонов сайтов – исправляем (по теме комментарии)
WP XML-карты сайта для WordPress закрывать или не закрывать в noindex
Как быстро наполнять сайт на Вордпресс – используем плагины.
Много более 20000 карт сайта может содержаться в индексе xml. Каждый блок карт по 2000 страниц (сумму страниц возможно изменить при помощи хука: wp_sitemaps_max_urls
).
пример использования:
apply_filters( 'wp_sitemaps_max_urls', int $max_urls, string $object_type )
параметры:
$max_urls
(int) Максимальное количество URL-адресов, включенных в карту сайта. По умолчанию 2000.
$object_type
(string) Тип объекта для карты сайта, подлежащего фильтрации (например, “сообщение”, “термин”, “пользователь”)
Если добавить этот код в functions.php
активного шаблона, то число ссылок по умолчанию (2000) изменится на 500.
//изменим количество ссылок в карте: параметры значений $object_type: post, term, user
add_filter( 'wp_sitemaps_max_urls', 'ats_wp_sitemap_max_urls', 20, 2 );
function ats_wp_sitemap_max_urls( $num, $object_type ){
return 500;
}
В ядре WordPress:
файл: wp-includes/sitemaps.php
WordPress 5.5 – XML-карта сайта – wp-sitemap.xml
Если перейти на страницу карты сайта //домен/wp-sitemap.xml
, то увидим примерно такую картинку:
Каждая строка включает в себя определённый сгруппированный блок ссылок.
Если перейти на главной странице карты сайта /wp-sitemap.xml
по ссылке (пример фото выше) откроется группа ссылок, ведущих на конкретную страницу сайта.
Как видите, вполне себе приличная карта.
Если решили использовать новую xml-карту сайта wp-sitemap.xml, не забудьте организовать редирект, либо поправить строку в robots.txt – как правило такая строка добавляется в финале файла: https://домен/sitemap.xml
какие разделы по умолчанию попадают в карту сайта WP
Карта сайта хранит в себе все имеющиеся (если не отключены: подробнее ниже) публичные (public) типы постов, таксономии (publicly_queryable – при регистрации типов…), страницы постов авторов и т.п.
как отключить карту сайта WordPress
В принципе, если у вас сайт и плагины аккуратно обновляются, то, например, разработчики Google XML Sitemaps уже позаботились об отключении новой WP карты: отключили отработку wp-sitemap.xml. В других подобных плагинах, думаю, сделали то же самое.
Однако, если по каким-то причинам у вас WP обновлен до версии 5.5, а плагин карты сайта не обновлялся, однако же использование плагина вам удобнее, то отключить WP карту запросто возможно таким образом.
Добавьте такой фильтр куда-то в файлы. Например, добавляют в functions.php
активной темы (либо дочерней) либо специально созданного для подобных целей файла/плагина my-functions.php – либо таким образом. Когда и как правильно создавать дочернюю тему шаблона сайта – создаём
большинство пользователей достаточно невнимательно относятся к вопросу создания дочерней темы (и напрасно!!), а по истечению времени приходится здорово перенастраивать сайт…
итак отключаем карту – добавим эту фильтр-строку:
add_filter( 'wp_sitemaps_enabled', '__return_false' );
Как только фильтр станет отрабатывать адрес /wp-sitemap.xml
нас будет перебрасывать на 404 страницу. Также карта сайта будет отключена, если в Настройки/Чтение установлена галочка “Попросить поисковые системы не индексировать сайт”.
удаление элементов Карты сайта WordPress, или управление элементами xml-карты
В WP есть три поставщика (провайдера) для карт сайтов. Что важно понимать – провайдеры – для разных типов постов: записи, таксономии, пользователи…
вот они:
posts = WP_Sitemaps_Posts{ }
taxonomies = WP_Sitemaps_Taxonomies{ }
users = WP_Sitemaps_Users{ }
а) Исключить в генерации Карты сайта возможно конкретного провайдера для карты сайта.
б) исключить отдельный тип – блок карты “внутри” провайдера.
с) исключить отдельный элемент для типа – ссылку на конкретную запись и пр.
удалим конкретную таксономию (тип записи/поста) из карты сайта
Например, исключим из генерации wp xml-карты тип записи-поста с именем names.
// отключим таксономии (ТИП ЗАПИСИ/ПОСТА) из карты сайта
add_filter( 'wp_sitemaps_taxonomies', 'ats_wp_remove_sitemaps_taxonomies' );
function ats_wp_remove_sitemaps_taxonomies( $taxonomies ) {
unset( $taxonomies['names'] ); // names - имя типа записи/поста
return $taxonomies;
}
В ядре WordPress:
файл: wp-includes/sitemaps/providers/class-wp-sitemaps-taxonomies.php
отключаем из xml-карты провайдера – ВСЕХ таксономий
/* исключаем стр. таксономии, если так, то все категории, теги - конкретные записи останутся */
add_filter( 'wp_sitemaps_add_provider', 'ats_wp_remove_sitemap_provider', 20, 2 );
function ats_wp_remove_sitemap_provider( $provider, $name ) {
// исключаем архивы
if ( in_array( $name, ['taxonomies'] ) ) // если таксономия
return false;
return $provider;
}
/* исключаем стр. таксономии, если так, то все категории, теги - конкретные записи останутся */
отключаем из xml-карты архивы юзеров (все архивы)
отключить архивы юзеров возможно, например, как-то так:
/* исключаем стр. ЮзероВ из карты сайта */
add_filter( 'wp_sitemaps_add_provider', 'ats_wp_too_remove_sitemap_provider', 20, 2 );
function ats_wp_too_remove_sitemap_provider( $provider, $name ) {
// исключаем архивы юзеров-пользователей
if ( in_array( $name, ['users'] ) ) //
return false;
return $provider;
}
/* исключаем стр. ЮзероВ из карты сайта */
удалим из xml-карты конкретные отдельные записи
Работаем с хуком: wp_sitemaps_posts_query_args
пример использования:
apply_filters( 'wp_sitemaps_posts_query_args', array $args, string $post_type );
параметры:
$args
(array) – массив аргументов WP_Query
$post_type
(string) – имя типа…
готовый опять же примерный код:
add_filter( 'wp_sitemaps_posts_query_args', 'ats_wp_sitemaps_taxonomies_query_args', 20, 2 );
function ats_wp_sitemaps_taxonomies_query_args( $args, $post_type ) {
if ( 'post' !== $post_type ) {
return $args;
}
// проверка параметра переменной
if( !isset( $args['post__not_in'] ) )
$args['post__not_in'] = array(); // проверим переменную
// исключаем... id = 10, 20
foreach( [ 10, 20 ] as $post_id ) {
$args['post__not_in'][] = $post_id;
}
return $args;
}
В ядре WordPress:
файл: wp-includes/sitemaps/provider/class-wp-sitemaps-posts.php
удалим из wp xml-карты ненужные страницы юзеров
Если вдруг требуется исключить из генерирования конкретную страницу юзера (юзеров), используем этот хук: wp_sitemaps_users_query_args
примерный код:
add_filter( 'wp_sitemaps_users_query_args', 'ats_wp_sitemaps_users_query_args' );
function ats_wp_sitemaps_users_query_args( $args ) {
// проверка параметра переменной
if( !isset( $args['exclude'] ) )
$args['exclude'] = array(); // проверим переменную
// исключаем... id = 10, 20
$args['exclude'] = array_merge( $args['exclude'], [ 10, 20 ] );
return $args;
}
В ядре WordPress:
файл:
wp-includes/sitemaps/sizes/class-wp-sitemaps-users.php
хуки можно посмотреть, например, здесь.
XML-карта сайта — wp-sitemap.xml – подробнее в видео:
mihalica.ru !
Да, Sitemap.xml с версии wp 5.5 автоматически генерится должен, но не всегда работает корректно к сожалению, поэтому приходится плагином делать. А html карту обычно с помощью WP Sitemap Page делаю, и стараюсь как-то ещё апгрейдить, что ли, оживить,
https://sverchokcorm.ru/sitemap/
тут например пару картинок добавил, все повеселее)Привет, Михаил!..
Логично… хотя…
…если самому читать… то можно и повеселее. А если для пользователя карта, то ему вряд ли нужно веселиться: он инфу ищет)
Спасибо за мнение, тезка)