Карта сайта — естественная часть SEO, она позволяет роботам поисковых систем получить доступ ко всем вашим записям, страницам и другим типам записей из одного места. На одном из наших проектом мы используем карту сайта, которая выводит всё на одной странице, при этом используя тогглы для сокрытия ссылок по-умолчанию, поэтому вам нужно будет кликнуть на тоггл, чтобы увидеть ссылку и дату ее публикации. Используя этот способ вы сможете включить в нее любой произвольный тип записи вашего сайта и выглядеть все это будет очень симпатично.
![sitemap[1]](https://wpincode.com/wp-content/uploads/2014/10/sitemap1.png)
Для того, чтобы создать Sitemap в WordPress без плагина, следуйте следующей инструкции:
Сделайте копию вашего файла page.php шаблона и сохраните его под именем sitemap.php и в самом начале вставьте:
<?php /* Template Name: Карта сайта */ ?>
Далее добавляем немного javascript, которые будут обрабатывать тогглы:
<script type="text/javascript">
$(document).ready(function () {
$('#toggle-view li').click(function () {
var text = $(this).children('div.panel');
if (text.is(':hidden')) {
text.slideDown('200');
$(this).children('span').html('-');
} else {
text.slideUp('200');
$(this).children('span').html('+');
}
});
});
</script>
Следующий код также добавляем в файл, он будет отвечать за отображение ваших записей и страниц в карте сайта:
<ul id="toggle-view">
<li>
<h2>Записи</h2>
<span>+</span>
<div class="panel">
<ul>
<?php
$myposts = get_posts('numberposts=-1&offset='.$debut);
foreach($myposts as $post) :
?>
<li class="sitemap"><?php the_time('d/m/y') ?>: <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
</ul>
</div>
<?php //endwhile; ?>
</li>
<li>
<h2>Страницы</h2>
<span>+</span>
<div class="panel">
<ul>
<?php
$myposts = get_posts('numberposts=-1&post_type=page&offset='.$debut);
foreach($myposts as $post) :
?>
<li class="sitemap"><?php the_time('d/m/y') ?>: <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
</ul>
</div>
</li>
</ul
Если вам нужно добавить произвольные типы записей, то можете добавлять их столько, сколько нужно с помощью следующего кода, при этом необходимо изменить POSTTYPENAME в двух местах на название желаемого типа записей:
<li>
<h2>POSTTYPENAME</h2>
<span>+</span>
<div class="panel">
<ul>
<?php
$myposts = get_posts('numberposts=-1&post_type=POSTTYPENAME&offset='.$debut);
foreach($myposts as $post) :
?>
<li class="sitemap"><?php the_time('d/m/y') ?>: <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
</ul>
</div>
</li>
И, наконец, добавляем следующий код в файл таблице стилей вашей темы style.css для визуального оформления тогглов:
#toggle-view {
list-style:none;
font-family:arial;
margin:0;
padding:0;
}
#toggle-view h2 {
border-bottom:0px;
margin-top:15px;
margin-top:30px;
}
#toggle-view h2:hover {
color:#ff0000
}
#toggle-view li {
margin:0px;
border-bottom:1px solid #ccc;
position:relative;
cursor:pointer;
list-style-type:none;
padding-left:15px;
}
#toggle-view span {
position:absolute;
left:0px;
top:0;
color:#bdbdbd;
font-size:28px;
font-weight:bold;
}
#toggle-view span:hover {
color:#ff0000;
}
#toggle-view .panel {
margin:5px 0;
display:none;
}
Последним шагом будет публикация страницы, которая будет выводить вашу Карту сайта. Для этого переходим в “Страницы” > “Добавить новую”, и после указания заголовка страницы и добавления контента (если необходимо), выбираем шаблон для страницы под названием «Карта сайта» из выпадающего списка справа.
![template1[1]](https://wpincode.com/wp-content/uploads/2014/10/template11.png)
Мы надеемся, что эта статья помогла вам добавить карту сайта в WordPress без помощи плагинов.
По всем вопросам и отзывам просьба писать в комментарии ниже.
Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.
