Всем привет! Поисковики уже давно требуют карту сайта в формате 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-->
Можно конечно вынести этот код и за пределы цикла, но «Некоторые проблемы лучше не решать, а избегать.»
Выводим карту
Следом создаем страницу в админке и выбираем наш шаблон, потом добавляем ее к примеру в главное меню, переходим по ссылке и радуемся сделанному. И да, не забудьте добавить свои стили, скорее всего, будет выглядеть весьма колхозно.
Если возникнут какие-либо вопросы, задавайте их в комментариях.
У меня на сегодня все, до встречи!