Содержание
Всем привет! Поисковики уже давно требуют карту сайта в формате xml, но и html версия весьма важна для посетителей, чтобы они с легкостью могли найти интересующий материал.
Ко всему прочему, не нужно будет копаться в админке в поисках нужных статей для правильной и максимально релевантной перелинковки.
Так как же сделать, чтобы html карта сайта WordPress выводилась у нас на сайте, да еще и без плагина? Ниже, я хочу предложить, на мой взгляд, самое простое, легкое и функциональное решение.
В этой статье, ни какие плагины мы использовать не будем, а просто возьмем готовый код и установим его в свой проект. Думаю, в этом, нет ничего сложного так как манипуляций с файлами шаблона минимальны.
Читайте также:
- Как закрыть сайт WordPress на обслуживание? Проще некуда
- Форма комментариев WP: убираем тег h3, меняем текст в заголовке и кнопке
- Как отключить обновление WordPress, плагинов и тем. 100% методы
Создание файлов
Для начала нам нужно создать шаблон страницы, который и будет являться по умолчанию нашей картой сайта. Идем в папку с шаблоном и просто скопируем файл page.php
, обзовем его к примеру sitemap.php
и туда добавим несколько строк кода.
<?php
/*
Template Name: Sitemap
*/
?>
Код выше, вставляем в самый верх скопированного файла, указываем название, которое и будет отображаться в админке сайта при редактировании страницы в ее атрибутах.
Убираем вывод контента
Далее, нам следует убрать все то, что связано с выводом контента. А это, сам цикл — while ( have_posts() )
и сам вывод the_content();
. То есть нам нужно оставить только html код внутри которого выводится контентная часть самой страницы и туда вставляем код ниже.
<!-- Sitemap-->
<!-- Выводим все опубликованные страницы -->
<h2 class="list-pages">Страницы</h2>
<ul>
<?php
// Все параметры функции "wp_list_pages()" смотрите здесь wp-kama.ru/function/wp_list_pages
wp_list_pages(array(
'exclude' => '',
'title_li' => '',
));
?>
</ul>
<!-- Выводим все опубликованные записи -->
<h2 class="list-posts">Посты</h2>
<ul>
<?php
// Добавляем id категорий для исключения вывода постов из них
$cats = get_categories('exclude='); // Пример 'exclude=1, 2, 3'
foreach ($cats as $cat)
{
echo "<li><h3>" . $cat->cat_name . "</h3>";
echo "<ul>";
query_posts('posts_per_page=-1&cat=' . $cat->cat_ID);
while (have_posts())
{
the_post();
$category = get_the_category();
// Ссылка на публикацию отображается только один раз, даже если она находится в нескольких категориях
if ($category[0]->cat_ID == $cat->cat_ID)
{
echo '<li>' . get_the_time() . '<a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
}
}
echo "</ul>";
echo "</li>";
}
?>
</ul>
<!-- Выводим категории сайта -->
<h2 class="list-cat">Категории</h2>
<ul>
<?php
// Все параметры функции "wp_list_categories" смотрите здесь wp-kama.ru/function/wp_list_categories
wp_list_categories(array(
'title_li' => '',
));
?>
</ul>
<!-- Выводим авторов сайта -->
<h2 class="list-authors">Авторы</h2>
<ul>
<?php
// Все параметры функции "wp_list_authors" смотрите здесь wp-kama.ru/function/wp_list_authors
wp_list_authors(array(
'exclude_admin' => 1,
));
?>
</ul>
<!-- #Sitemap-->
Можно конечно вынести этот код и за пределы цикла, но «Некоторые проблемы лучше не решать, а избегать.»
Выводим карту
Следом создаем страницу в админке и выбираем наш шаблон, потом добавляем ее к примеру в главное меню, переходим по ссылке и радуемся сделанному. И да, не забудьте добавить свои стили, скорее всего, будет выглядеть весьма колхозно.
Если возникнут какие-либо вопросы, задавайте их в комментариях.
У меня на сегодня все, до встречи!