Карта сайта на wordpress без плагина

Карта сайта на wordpress без плагина

Карта сайта один из главных элементов продвижения сайта, без нее поисковики будут в разы медленнее индексировать новые страницы. Карта сайта или sitemap.xml — это XML-документы с служебной информацией. Они служат для ориентации поисковых роботов в структуре сайта. Кроме XML-карт существуют и HTML-карты. Они помогают посетителям ориентироваться на сайте. В этой статей речь идет исключительно о XML-картах, предназначенных для быстрой индексации именно поисковыми системами.

Что содержится в sitemap.xml:

  1. Список URL страниц сайта и их иерархия.
  2. Тип опубликованного контента.
  3. Информация об изображениях и видео для индексирования сайта и формирования выдачи.
  4. Сведения о частоте обновления и последнем обновлении страницы.
  5. Сведения о приоритетности страниц.
  6. Данные об альтернативных версиях страниц.

Утверждение, что без 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()."daily1.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))."weekly0.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))."monthly0.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);

Модуль подсветки синтаксиса еще не до конца отлажен, может исказить текст, поэтому выкладываю ссылку, где можно скачать этот фрагмент кода

Ну вот в принципе и всё.

Теперь карта Вашего сайта будет обновляться полностью во время публикации страницы, записи, либо их удаления.

Опубликовано: 17:01-15.02.2021

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

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