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

Разместил / Просмотров: 1 383 / комментариев 13

Приветствую Вас, дорогие читатели блога. Сегодня я хочу Вам рассказать как сделать не плохую карту сайта на блог WordPress с помощью архива записей.

Я как обычно начинаю отказываться от плагинов. У меня стоял плагин, который автоматически делал данную карту сайта, но единственное, что меня не устраивало это формат сортировки записей. Они сортировались по рубрикам. Подробнее: название рубрики, и отображение всех записей которые находятся в ней.

Мне больше нравится сортировка по месяцам, а именно название месяца и все отображение всех записей, которые были опубликованы в этот месяц. Так как я в php не силён, я погрузился в поиски данного кода, оказалось его не так легко и найти, но несколько дней мучений и попыток всё же дали свои плоды, и теперь Вы можете полюбоваться тем, что у меня получилось. Посмотреть мою новую карту сайта Вы можете тут.

Если Вас устраивает такой формат, я научу как её сделать. Сразу скажу, что тут ничего сложного нет. Ну а теперь, поехали.

Карта сайта для WordPress с помощью архивов и без плагинов.

Демо

PHP

С самого начала нам нужно зайти в админку нашего блога, затем во Внешний вид и редактор, там найти файл page.php и открыть его. Затем на рабочем столе создать текстовый документ и скопировать в него все содержимое page.php.

Далее в нашем текстовом документе нужно найти вот эту строчку <?php the_content(); ?> и вместо неё вставить вот этот код:

< ?php
$counter = 0;
$ref_month = '';
$monthly = new WP_Query(array('posts_per_page' => -1));
if( $monthly->have_posts() ) : while( $monthly->have_posts() ) : $monthly->the_post();

if( get_the_date('mY') != $ref_month ) {
 if( $ref_month ) echo "\n".'';
 echo "\n".'<h3>'.get_the_date('F. Y').'</h3>';
 echo "\n".'<ul>';
 $ref_month = get_the_date('mY');
 $counter = 0;
 }

if( $counter++ < 100 ) echo "\n".' <li><a href='.get_permalink($post->ID).'>'.get_the_title($post->ID).'</a>';

endwhile;
echo "\n".'</ul>';
endif;
?>

Давайте посмотрим, что получилось у меня:

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

< ?php get_header(); ?>

<!-- begin colLeft -->
 <div id="colLeft">
 < ?php if (have_posts()) : while (have_posts()) : the_post(); ?>

<!-- Начало .singlecont -->

<div class="singlecont">
<h1 class="home">< ?php the_title(); ?></h1>
<div class="hrdown"></div>

<div class="textPreview">
< ?php
$counter = 0;
$ref_month = '';
$monthly = new WP_Query(array('posts_per_page' => -1));
if( $monthly->have_posts() ) : while( $monthly->have_posts() ) : $monthly->the_post();

if( get_the_date('mY') != $ref_month ) {
 if( $ref_month ) echo "\n".'';
 echo "\n".'<h3>'.get_the_date('F. Y').'</h3>';
 echo "\n".'<ul>';
 $ref_month = get_the_date('mY');
 $counter = 0;
 }

if( $counter++ < 100 ) echo "\n".' <li><a href='.get_permalink($post->ID).'>'.get_the_title($post->ID).'</a>';

endwhile;
echo "\n".'</ul>';
endif;
?>
< ?php endwhile; else: ?>
<p>< ?php _e('Sorry, no posts matched your criteria.'); ?></p>
< ?php endif; ?>

<div class="hrdown"></div>
</div><!-- Конец .синглконтент -->

</div>
</div>

<!-- Конец colleft -->

< ?php get_sidebar(); ?>

< ?php get_footer(); ?>

Затем следует сохранить наш текстовый документ под названием sitearchives.php.

Если у Вас в месяц выходит более 100 записей, то Вам нужно отредактировать вот эту строчку if( $counter++ < 100 ) где цифра 100 это количество отображаемых записей в месяц. Если у Вас в месяц получается меньше 100 записей, тогда редактировать ничего не нужно.

Установка

У нас получился новый файл для карты сайта из архивов для WordPress — sitearchives.php. Сейчас нам нужно его скинуть в папку с установленной темой. На Вашем хостинг аккаунте нужно зайти в корневую папку сайта затем в wp-content, далее в themes, теперь находим папку с названием нашей темы и скидываем туда sitearchives.php.

Скинули? Ура :-) Теперь идём в админку блога потом в Страници и Добавить новую. Там вводим название нашей страницы, например «Архивы» или Карта сайта, как Вам больше понравится. Теперь в блоке с правой стороны под названием «Атрибуты страницы» и в поле «Шаблон» выбираем sitearchives.

Теперь нажимаем на «Опубликовать» и любуемся нашей новой картой сайта отсортированной по месяцам.

Друзья, вот и всё, что хотелось сказать по этому поводу. Не знаю как Вам но мне очень нравится данный стиль сортировки записей. Надеюсь и Вам понравится.

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

  • Опять нужная информация, забрал себе)) Спасибо

  • Скинул файл в корень темы — в настройках только Базовый шаблон, файла не видит((( Что делать?

  • Макс, значит, что то не правильно сделали, проверьте ещё раз пожалуйста.

  • Да все вроде правильно, создал файлик, кинул в корень темы, не видит и все(((((

  • А в редакторе файл показывает?

  • да

  • Макс, а в атрибутах страницы он не высвечивается?

  • В атрибутах у меня вообще нет графы Шаблон, только Родительская! ((

  • Александр, а скажите пожалуйста, к сделать такой футер как у Вас?

  • Макс, а у Вас стандартная сборка вп стоит, с официального сайта?

  • Тяжело в одном комментарии рассказать. В общем сначала рисуется а потом верстается.

  • Здравствуйте!
    Мне тоже этот метод вставки карты сайта понравился и я его использовал на своём сайте здесь: http://moyaumnichka.ru/karta-sajta
    Надеюсь Автор этого блога оставит ссылку, ведь я дам правильный ответ на Ваш вопрос! :-)

    Ответ: Вы вставляете приведённый выше автором код вместо Всё верно! Код рабочий и отлично впишется. Вот только вы используете для редактирования файл page.php
    в нём, как правило нет СВЕРХУ:

    Именно этот код позволяет использовать данный файл как шаблон!
    Заметим, когда автор говорит: «Давайте посмотрим, что получилось у меня» — там есть этот код!
    Просто добавьте его и у себя!
    Всего доброго….

  • Добрый день Александр, к сожалению не получилось сделать так как вы описываете в статье. Не показывает шаблон sitearchives в атрибутах страницы.. печалька =(