Как создать карту сайта в WordPress без плагинов

Карта сайта — естественная часть SEO, она позволяет роботам поисковых систем получить доступ ко всем вашим записям, страницам и другим типам записей из одного места. На одном из наших проектом мы используем карту сайта, которая выводит всё на одной странице, при этом используя тогглы для сокрытия ссылок по-умолчанию, поэтому вам нужно будет кликнуть на тоггл, чтобы увидеть ссылку и дату ее публикации. Используя этот способ вы сможете включить в нее любой произвольный тип записи вашего сайта и выглядеть все это будет очень симпатично.

sitemap[1]

Для того, чтобы создать 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]

Мы надеемся, что эта статья помогла вам добавить карту сайта в WordPress без помощи плагинов.

По всем вопросам и отзывам просьба писать в комментарии ниже.

Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.

VN:F [1.9.22_1171]
Rating: 3.0/5 (2 votes cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
  • Леша

    Попробовал сделать карту сайта как у вас , почему то ругается syntax error unexpected < expecting $ EOF, на этой строчке

    $myposts = get_posts(‘numberposts=-1&offset=’.$debut);

    foreach($myposts as $post) :

    ?>

    : <a href="»>

    • ADv

      Нужно подробнее разбираться. Мало что можно понять о проблеме на данный момент.

Scroll To Top