WordPress: как создать xml-карту сайта?

Карта сайта в xml формате может значительно ускорить индексирование блога. Вы можете сказать "мой блог часто обновляется, потому и без этих карт сайта быстро индексируется". Но как насчет индексирования старых записей, если вы их отредактировали? xml-карта сайта содержит не только список ссылок, которые нужно проиндексировать, но и дату последней модификации. То есть карта сайта действительно полезна и необходима сайту.

Почти во всех обзорах советуют один и тот же плагин - "Google XML Sitemap". Но у меня мультисайт и этот плагин выдавал следующую надпись:

This version of Google XML Sitemaps is not multisite compatible.
Unfortunately this version of the Google XML Sitemaps plugin was not tested with the multisite feature of WordPress 3.0 yet.
The plugin will not be active until you disable the multisite mode.
Or you can try the new beta which supports all the new WordPress features!

Потому я его  удалил и поставил тот, который поддерживает режим "multi-site".

BWP Google XML Sitemaps

wordpress.org/extend/plugins/bwp-google-xml-sitemaps

Как устанавливать плагин рассказывать не буду - тут все стандартно. Перейдем сразу к обсуждению возможностей плагина. В боковом меню админки WordPress появится пункт "BWP GXC" - в нем можно изменить\указать настройки плагина.

В настройках плагина можно указать какие типы страниц не нужно вносить в карту сайта, указать приоритеты,  максимальное число ссылок в одном файле:

BWP Google XML Sitemaps: настройки

BWP Google XML Sitemaps: настройки 2

Плагин создает несколько карт сайта, каждая из которых отвечает за тот или иной тип страниц:

BWP Google XML Sitemaps: созданные карты

Файл sitemapindex.xml содержит в себе список всех файлов-карт блога:

BWP Google XML Sitemaps: карта сайта

А вот так выглядит один из файлов с картой сайта:

BWP Google XML Sitemaps: карта сайта 2

Из карты сайта можно исключать ненужные посты - добавьте в файл functions.php:

add_filter('bwp_gxs_post_where', 'bwp_gxs_exclude_posts', 10, 2);
function bwp_gxs_exclude_posts($query_where_part, $post_type)
{
 switch ($post_type)
 {
  case 'post': return ' AND wposts.ID NOT IN (11,12,13,14) '; break;
  case 'movie': return ' AND wposts.ID NOT IN (15,16,17,18) '; break;
 }
 return '';
}

11, 12, 13, 14 - ID исключаемых постов из файла post.xml
15, 16, 17, 18 - ID исключаемых постов из файла movie.xml

Также можете исключить  категории и теги:

add_filter('bwp_gxs_term_exclude', 'bwp_gxs_exclude_terms', 10, 2);
function bwp_gxs_exclude_posts($excluded, $taxonomy)
{
 switch ($taxonomy)
 {
  case 'category': return array('category-1', 'category-2'); break;
  case 'post_tag': return array('tag-1', 'tag-2'); break;
 }
 return array('');
}

category-1, category-2 - исключаемые категории из taxonomy_category.xml
tag-1, tag-2 - исключаемые теги из taxonomy_post_tag.xml

Если у вас установлен кэширующий плагин, то может возникнуть конфликт с кешированием xml-файлов. К примеру, плагин W3 Total Cache в файле .htaccess добавляет:

sitemap(_index|[0-9]+)?\.xml(\.gz)?

Замените эту строку на:

(sitemapindex|[a-z0-9_-]+)\.xml

Файл, который необходимо указать поисковым роботам в качестве карты сайта -  sitemapindex.xml.

В моем случае для этого блога карта сайта будет находится по адресу elims.org.ua/sitemapindex.xml, а для подблога о притчах по адресу elims.org.ua/pritchi/sitemapindex.xml.

Плагин делает доступной карту сайта как по адресу elims.org.ua/sitemapindex.xml, так и по elims.org.ua/sitemap.xml.

Осталось лишь оповестить поисковики о ваших картах сайта - для этого укажите их в файле robots.txt. У меня это будет выглядеть вот так:

User-agent: *
Disallow:
Sitemap: https://elims.org.ua/sitemap.xml
Sitemap: https://elims.org.ua/pritchi/sitemap.xml

Понравилось? =) Поделись с друзьями:

Обсуждение записи “WordPress: как создать xml-карту сайта?”

  1. Мусин Александр says:

    Отличный плагин!! :) у самого такой стоит…

  2. GladWeb (gladweb.ru) says:

    Полезная статья, однако бывают моменты когда XML весит много и нужно его разделить. Способ описал в своем блоге: gladweb.ru/wordpress-wxr-file-splitter-razdelitel-bolshix-xml-fajlov/

  3. Владимир Демянович (elims.org.ua) says:

    GladWeb, Ваш способ не применим к данному виду xml.

  4. Alisa (beklem25.ru) says:

    Отлично! Спасибо

  5. Ivan says:

    Спасибо за мануал по плагину! Еще такой вопрос — как вы сделали так что-бы пост в выдаче светился с датой появления 4 дня назад, хотя сама статья создана еще в 2013 (видно по комментариях)? Если не секрет :)

  6. Владимир Демянович (elims.org.ua) says:

    Ivan, пожалуйста. я вместо даты первой публикации вывожу дату последней редакции, 4 дня назад я добавил ссылку на запись htaccess.

Обсудить