Привет, друзья! Сегодняшняя статья будет технической, и я расскажу вам, как заменила плагин для вывода карты сайта кодом.

В своей предыдущей статье о чистке на блоге я писала, что активно избавляюсь от лишних плагинов, ссылок и всякого мусора. Вот и пришел черед плагина Dagon Design Sitemap Generator.

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

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

Это я к тому, что WordPress-темы разные и код «пристраивается» тоже по-разному. Но, как бы сложно все не казалось, после некоторых проб и ошибок мне удалось сделать приличную карту (не идеальную), но вполне удобную.

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

Что ж, читайте текстовую инструкцию, или сразу смотрите видеоурок ниже.

Итак…

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

За основу я взяла свой шаблон страниц – page.php. Его можно скачать с сервера хостинга, подсоединившись по ftp (через Файлзиллу, например). Находите в корне папку wp-content, в ней – папку с названием вашей темы и там – page.php. Правой кнопкой мыши загружаете этот файл к себе на компьютер.

Теперь мы будем редактировать его в блокноте Notepad++.

Также файл page.php можно найти прямо в админке Вордпресс. Зайти в раздел «Внешний вид», потом «Редактор», дальше в правой боковой колонке выбрать «Шаблон страницы» (page.php), скопировать его и вставить в Notepad++ для правок.

Так, это сделали – идем дальше…

А дальше начинается самое интересное – добавление кода. Он состоит из двух фрагментов:

Вот этот:

<?php
/* Template Name: karta 
*/ 
?>

нужно добавить в page.php перед строчкой:

<?php get_header(); ?>

Смотрите сюда:

первую часть кода вставляем до строки php get header

Здесь название шаблона «karta» вы можете заменить на любое другое (map, sitemap и т.п.) или оставить, как есть.

Со второй частью кода немножко сложнее. Ее нужно будет добавить там, где у вас выводится контент. Вернее, вместо него. При этом сохранив стили страницы, сайдбар и футер, чтобы карта отображалась корректно.

Тут и начинаются главные различия в шаблонах. Поэтому я просто покажу вам пример на двух сайтах. А вы уже пробуйте у себя.

Да, вот код, который будем вставлять:

<h1>Карта сайта</h1>
<div class="text">
 <h3>Страницы</h3> 
 <ul> 
 <?php wp_list_pages('exclude=ID&title_li=');?> 
 </ul> 
 <h3>Записи</h3> 
 <?php 
 $cats = get_categories('exclude=ID'); 
 foreach ($cats as $category) { 
 print '<div class="category"><a href="'.get_category_link($category->cat_ID).'" target="_blank">'.$category->name.'</a></div>'; 
 print '<ul>'; 
 query_posts(array('cat' => $category->cat_ID,'showposts'=>1000)); 
 while (have_posts()) { the_post(); 
 $showed_ids[] = get_the_ID(); 
 ?> 
 <li>
 <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>" target="_blank"><?php the_title() ?> </a>
 <span class="time"><?php the_time('d.m.Y') ?></span> 
 </li> 
 <?php } 
 print '</ul>'; 
 } 
 ?> </div><!-- end text -->

Заголовки «Карта сайта», «Страницы», «Записи» вы можете менять на свои. Также, если, к примеру, хотите, чтоб в карте выводились только статьи, а страницы нет, то вот эту часть кода:

<h3>Страницы</h3> 
<ul> 
<?php wp_list_pages('exclude=ID&title_li=');?> 
</ul>

можно просто убрать.

Параметр «exclude=ID» (их в коде 2) позволяет исключать из карты те страницы и категории, которые вы хотите скрыть от посетителей. Вместо ID достаточно указать это значение для конкретной страницы или рубрики. Оно отображается в строке браузера при редактировании.

Строка:

<span class="time"><?php the_time('d.m.Y') ?></span>

отвечает за вывод даты возле каждой статьи. Если нужно – ее тоже можете убрать.

даты статей в карте сайта

Формат d.m.Y – это когда день, месяц и год отображаются числами. А вот такой: F j, Y выводит сначала месяц (словом), затем день и год (числами).

Значение ‘showposts’=>1000 показывает, сколько статей будет выводиться на странице. К сожалению, не знаю, как разбить такую карту на страницы, как это было в плагине.

Итак, вот как выглядел мой шаблон page.php до правок:

мой page.php до правок

Здесь я практически ничего не удаляла за исключением одной строчки. А код карты разместила до начала контента, после строчки:

<?php PC_Hooks::pc_after_content_open(); /* Framework hook wrapper */ ?>

Если перевести дословно –«после того, как контент открывается».

Соответственно, все что после контента, кроме комментариев, я оставила.

И второй пример на моем тестовом сайте с WP-шаблоном «Twenty Thirteen»:

правка page.php в теме twenty thirteen

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

Да, и еще – этот код выводит просто названия рубрик, без выделенного слова «Рубрика». Если вам нужен этот элемент, то после строчки:

foreach ($cats as $category) {

добавьте такой код:

echo '<li>'."\n".'<strong>Рубрика:</strong> '.$cat->cat_name.''."\n"; 
echo '<ul>'."\n";

теги strong отвечают за выделение слова «Рубрика» жирным.

Смотрите на скриншоте, куда добавлять:

выделение рубрик жирным

Друзья, надеюсь, смысл вы уловили. Не переживайте, если получится не с первого раза – у меня вышло где-то с третьего.

Чтобы посмотреть, как отображается карта, файл со всеми изменениями нужно сохранить, переименовать, например в karta.php, и закинуть на сервер в папку с вашей темой. Туда же, где мы брали page.php.

Важно, чтобы он имел расширение php и не дублировал названия уже существующих файлов. Никаких index, page.

Теперь возвращайтесь в админку, добавляйте новую страницу, которая и будет картой сайта.

Укажите ее название, и справа в атрибутах страницы у вас должно появиться выпадающее окошко с шаблонами. Здесь выбирайте шаблон только что созданной карты:

добавляем карту статей на блог

В теле ничего писать не нужно, просто жмите «опубликовать» или для начала просто «сохранить» и «просмотреть».

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

Вот и все – это что касается вывода карты сайта при помощи кода.

Как обещала, несколько слов о плагине Dagon Design Sitemap Generator. У него простые и удобные настройки. Но, сам плагин не обновлялся несколько лет, поэтому добавить его в админке не получится. Скачать можно на официальном сайте. Тут выбирайте вариант Latest Release.

Устанавливаете, активируете и настраиваете. Он появится во вкладке «Настройки». Сразу же в верхнем окне выберите русский язык и сохраните. Все теперь – у плагина русское меню и вам будет легче его настроить.

настройки плагина dagon design sitemap generator

В основном там все понятно, расскажу только о некоторых моментах:

• В окне «Количество единиц контента на странице» укажите, сколько записей вы хотите показывать. Таким способом можно создать навигацию по карте и выводить, к примеру, по 100 записей на странице.

• Поле «Постоянная ссылка на карту сайта» я оставляла пустым.

• В конце можете указать путь к карте в формате xml, тогда ссылка на нее будет отображаться на странице.

• И не забывайте поставить галочку «Ссылки открывать в новом окне» и жмите на кнопку «Записать настройки».

Теперь, опять же, создаете новую страницу – называете ее и в режиме «текст» в тело ставите вот этот код: <!– ddsitemapgen –>

Все – нажимайте «опубликовать» и ваша карта готова. Да, там внизу странички появится ссылка автора: «Плагин написан dagon design» – ее можно либо убрать совсем, сделать некликабельной или закрыть тегами span.

Для этого заходите в консоль →плагины → редактор. В выпадающем окне выбираете «Dagon Design» находите эту ссылку (она ближе к концу) и убираете ее. Вот скриншот:

убираем лишнюю ссылку в плагине dagon design sitemap

Если вам кажется сложным то, что я здесь написала – предлагаю посмотреть видеоурок – там все наглядно и понятно:

А если остались вопросы или есть дополнения – пишите в комментах.

Желаю вам успехов!

С уважением, Виктория Карпова