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

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

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

В этой публикации я расскажу о том, как создать 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

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

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

5 × 8 =

 

Мы используем cookie-файлы для наилучшего представления нашего сайта. Продолжая использовать этот сайт, вы соглашаетесь с использованием cookie-файлов.
Принять