Можно играть
23.10.19

Функциональная html карта сайта WordPress без плагина

Функциональная html карта сайта WordPress без плагина

Всем привет! Поисковики уже давно требуют карту сайта в формате xml, но и html версия весьма важна для посетителей, чтобы они с легкостью могли найти интересующий материал.

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

Так как же сделать, чтобы html карта сайта WordPress выводилась у нас на сайте, да еще и без плагина? Ниже, я хочу предложить, на мой взгляд, самое простое, легкое и функциональное решение.

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


Читайте также:


Создание файлов

Для начала нам нужно создать шаблон страницы, который и будет являться по умолчанию нашей картой сайта. Идем в папку с шаблоном и просто скопируем файл 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-->

Можно конечно вынести этот код и за пределы цикла, но «Некоторые проблемы лучше не решать, а избегать.»

Выводим карту

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

Если возникнут какие-либо вопросы, задавайте их в комментариях.

У меня на сегодня все, до встречи!