пр. Мира 620000 Россия +7900-000-00-00
Логотип блога интернет-бродяги

XML-карта сайта без плагина

Простая XML-карта сайта без плагина

Последнее бновение - 15 января 2023 в 16:19

В этой публикации я расскажу о том, как создать XML-карту сайта на сайте WordPress без плагина. Если по какой-то причине вы не используете плагин All In One SEO Pack, который позволяет формировать её налету, то этот способ вполне подойдёт.

Потребуется добавить небольшой код в файл functions.php. Данной функцией я сам когда-то пользовался на одном сайте. Работает безупречно.

Что такое XML-карта сайта? В корневой директории сайта желательно иметь файл sitemap с расширением .xml. Этот файл содержит список ссылок на все публикации, страницы, разделы веб-сайта. Когда публикуется новая статья, её URL влетает в sitemap.xml, с помощью которого оповещаются поисковые системы: «А ну-ка посмотрите, у нас тут новый контент!».

XML-карту не надо путать с HTML-картой сайта. В отличие от последней, она в большей степени предназначена для роботов поисковиков и служит для ускорения индексации URL.

Код, о котором я говорил выше, взял на сайте, имя которого содержится в названии функции. В настоящее время сайт этот уже не работает.

Собственно, вот такой код надо вставить в functions.php:

// XML-карта сата без плагина
function moneyinnetwork_xml_sitemap ($home_priority='1.0', $page_priority='1.0', $post_priority='0.6', $other_priority = '0.3', $auto=true)
{
global $wpdb;
$result = $wpdb->get_results("SELECT ID, post_modified_gmt, post_type FROM $wpdb->posts WHERE post_status='publish' ORDER BY post_modified_gmt DESC", 'ARRAY_A');
if( !empty($result) )
{
$f = '<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
$i = 0;
$date1 = date_create(date('c'));
foreach ($result as $row)
{
if ( $auto )
{
$date2 = date_create($row['post_modified_gmt']);
$interval = date_diff($date1, $date2);
$priority = '0.3';
if ( $interval->days <= 30 ) $priority = '1.0';
if ( $interval->days > 30 && $interval->days <= 60 ) $priority = '0.8';
if ( $interval->days > 60 && $interval->days <= 90 ) $priority = '0.6';
}
else
{
$priority = $other_priority;
if ( $row['post_type'] == 'page' ) $priority = $page_priority;
if ( $row['post_type'] == 'post' ) $priority = $post_priority;
}
if ( $i == 0 )
{
$f = $f.'<url><loc>'.get_home_url().'</loc><lastmod>'.date('c', strtotime($row['post_modified_gmt'])).'</lastmod><changefreq>daily</changefreq><priority>'.$home_priority.'</priority></url>';
$i = 1;
}
$f = $f.'<url><loc>'.get_permalink($row['ID']).'</loc><lastmod>'.date('c', strtotime($row['post_modified_gmt'])).'</lastmod><changefreq>daily</changefreq><priority>'.$priority.'</priority></url>';
}
$f = $f.'</urlset>';
$fp = fopen($_SERVER['DOCUMENT_ROOT'].'/sitemap.xml', 'w');
fwrite($fp, $f);
fclose($fp);
$result = wp_remote_get('http://www.google.com/ping?sitemap='.get_home_url().'/sitemap.xml');
if ( ! is_wp_error( $result ) || wp_remote_retrieve_response_code( $result ) === 200 )
{ /* карта успешно отправлена в google */ }
}
return;
}
add_action('delete_post', moneyinnetwork_xml_sitemap, 1000, 0);
add_action('publish_post', moneyinnetwork_xml_sitemap, 1000, 0);
add_action('publish_page', moneyinnetwork_xml_sitemap, 1000, 0);

Пересохраните файл функций. Теперь в адресной строке браузера, добавьте к URL своего сайта через слэш sitemap.xml и нажмите Enter на клавиатуре. В результате вы должны увидеть XML-карту сайта со списком всех публикаций.

Это был лишь один из способов создания карты сайта для роботов. Попробую чуть позже дополнить этот пост. Есть и другой метод.

Всем WEB!

Друзья, плюсаните, вдруг пригодится!

Почитайте похожие материалы

Об авторе: Hobo

Стараюсь всё делать своими собственными руками: от починки выключателя до создания веб-сайта. В этом блоге делюсь своим опытом и впечатлениями от использования различной техники, электронных и других устройств, которые побывали у меня в руках.

2 Comments

  1. Инна:

    Спасибо, минус один плагин. нормальная карта сайта.

    1. Hobo:

      Да, простая карта сайта.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *