Ваш путь: Главная » WordPress c плагинами, WordPress без плагинов » ( читаемый пост: перейти в Читаемое )
заказать разработку или сопровождение вашего сайта/блога

написано: — 
отредактировано: 2020-10-05
издатель: в теме: WordPress c плагинами, WordPress без плагинов пост видели: 107
Запросто с WordPress — создание сайтов ATs media

В WordPress 5.5 добавлена XML-карта сайта — wp-sitemap.xml

В WordPress 5.5 отныне добавлена своя XML-карта сайта, т.е теперь присутствует в ядре CMS Вордпресс по умолчанию. Для тех владельцев сайтов, которые стараются использовать как можно меньше сторонних плагинов, появился шанс избавиться ещё от одного плагина. Например, многие работают с Google XML Sitemaps, а значит теперь его можно удалить и работать с родной для WordPress картой .xml.

Стоит ли так сразу избавляться от привычного плагина Карты сайта!? ответ очевиден: каждому решать лично.

Я, к примеру, пока что только тестировал новый функционал ВП, и на данный момент у меня на всех проектах используется плагин. Хотя, на мой взгляд, wp-sitemap.xml вполне себе приличное дополнение. И если вы запускаете новый проект, то, конечно же, новую 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

 

 

 

Каждая строка включает в себя определённый сгруппированный блок ссылок.

 

 

Если перейти на главной странице карты сайта /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 !


Михаил ATs - владелец блога запросто с Вордпресс - в сети нтернет давным-давно...

...веб разработчик студии ATs media: помогу в создании, раскрутке, развитии и целенаправленном сопровождении твоего ресурса в сети... - заказы, вопросы... разработка...




Нажатия на кнопочки определяют Ваше высокое гражданское сознание
Удачи в работе и творчестве..!
Статьи по теме:


Поделитесь соображениями: Ваши мысли очень важны!

Внимание! Обязательные поля помечены *

  отныне доступен плагин: ats privacy policy ©

 необходимо принять правила конфиденциальности