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

возможно заказать разработку или сопровождение, услуги вашего сайта/блога


обновлено 2024-02-13 в теме: WordPress c плагинами; WordPress без плагинов; Версии WordPress  Читаемая статья!
Запросто с 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 ©


  1. Да, Sitemap.xml с версии wp 5.5 автоматически генерится должен, но не всегда работает корректно к сожалению, поэтому приходится плагином делать. А html карту обычно с помощью WP Sitemap Page делаю, и стараюсь как-то ещё апгрейдить, что ли, оживить, https://sverchokcorm.ru/sitemap/ тут например пару картинок добавил, все повеселее)

    Ответить - Михаил

    • Привет, Михаил!..

      например пару картинок добавил, все повеселее

      Логично… хотя…
      …если самому читать… то можно и повеселее. А если для пользователя карта, то ему вряд ли нужно веселиться: он инфу ищет)
      Спасибо за мнение, тезка)

      Ответить - Михаил