
Карта сайта один из главных элементов продвижения сайта, без нее поисковики будут в разы медленнее индексировать новые страницы. Карта сайта или sitemap.xml — это XML-документы с служебной информацией. Они служат для ориентации поисковых роботов в структуре сайта. Кроме XML-карт существуют и HTML-карты. Они помогают посетителям ориентироваться на сайте. В этой статей речь идет исключительно о XML-картах, предназначенных для быстрой индексации именно поисковыми системами.
Что содержится в sitemap.xml:
- Список URL страниц сайта и их иерархия.
- Тип опубликованного контента.
- Информация об изображениях и видео для индексирования сайта и формирования выдачи.
- Сведения о частоте обновления и последнем обновлении страницы.
- Сведения о приоритетности страниц.
- Данные об альтернативных версиях страниц.
Утверждение, что без XML-карты поисковые системы не будут индексировать сайт — не верно. Даже в Вебмастере Яндекса отсутствие файла с картой отмечается не как критичная ошибка, а только возможная. Но есть ситуации, когда отсутствие карты затрудняет индексирование страниц. Например, если на них нет ссылок с других страниц сайта, или сайт большой со сложной структурой, или нужно проиндексировать новый сайт. Не получиться и быстро сообщить поисковым системам о том, что информация на страницах обновилась.
Карта сайта в WordPress
По умолчанию в среде wordpress отсутствуют инструменты ее автоматического создания.
Для создания карты сайта чаще всего предлагается использовать плагин. Вроде просто, но, с каждым установленным плагином сайт становится все тяжелее, плюс Вы будете привязанным к чужому коду и т.п. Но и без карты сайта нельзя. Поэтому, предлагаю решить этот вопрос с меньшими затратами.
Как создать карту сайта в WordPress без плагинов
И так, чтобы карта Вашего сайта в среде WordPress создавалась и автоматически обновлялась при каждой новой публикации, необходимо в файл functions.php, который расположен в корневом каталоге темы добавить следующий код.
/*
sitemap XML
*/
function front_page_url(){
$protocol=(!empty($_SERVER['HTTPS'])&&$_SERVER['HTTPS']!=='off'||$_SERVER['SERVER_PORT']==443)?"https://":"http://";
$domainName=$_SERVER['HTTP_HOST'];
return $protocol.$domainName;
}
function xml_sitemap(){
$post_priority="0.8";
$page_priority="0.7";
$args=array('post_type'=>array('post','page'),'post_status'=>'publish','posts_per_page'=>-1,'ignore_sticky_posts'=>true);
$result = new WP_Query($args);
if(!empty($result)){
$f='';
// front page
$f = $f."".front_page_url()." daily 1.0 ";
// tags
$tags=get_tags(array('number'=>0,'offset'=>0,'orderby'=>'id','order'=>'ASC','hide_empty'=>true,'fields'=>'all','slug'=>'','hierarchical'=>true,'name__like'=>'','pad_counts'=>false,'get'=>'','child_of'=>0,'parent'=>''));
foreach($tags as $tag){
$f=$f."".str_replace('./',null,get_tag_link($tag->term_id))." weekly 0.4 ";
}
// categories
$categories=get_categories(array('taxonomy'=>'category','type'=>'post','child_of'=>0,'parent'=>'','orderby'=>'name','order'=>'ASC','hide_empty'=>1,'hierarchical'=>1,'exclude'=>'','include'=>'','number'=>0,'pad_counts'=>false));
foreach($categories as $cat){
$f=$f."".str_replace('./',null,get_category_link($cat->cat_ID))." monthly 0.5 ";
}
// posts
foreach($result->posts as $row){
if(get_post_type($row->ID)=='post'){
$priority=$post_priority;
}else{
$priority=$page_priority;
}
$f=$f."".get_permalink($row->ID)." ".date('c', strtotime($row->post_modified_gmt))." daily ".$priority." ";
}
$f=$f.' ';
$fp = fopen($_SERVER['DOCUMENT_ROOT'].'/sitemap.xml','w');
fwrite($fp, $f);
fclose($fp);
}
return;
}
add_action(publish_post,xml_sitemap);
add_action(publish_page,xml_sitemap);
add_action(delete_post,xml_sitemap);
Модуль подсветки синтаксиса еще не до конца отлажен, может исказить текст, поэтому выкладываю ссылку, где можно скачать этот фрагмент кода
Ну вот в принципе и всё.
Теперь карта Вашего сайта будет обновляться полностью во время публикации страницы, записи, либо их удаления.

