Карта сайта для 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".'</ul>'; 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></li>'; 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".'</ul>'; 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></li>'; 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> </div> <!-- Конец colleft --> <?php get_sidebar(); ?> <?php get_footer(); ?>
Переименовываем текстовый документ в sitearchives.php , сохраняем.
В тех случаях когда публикаций за месяц сто и более, придется корректировать строку if( $counter++ < 100 ), где сто отображаемые записи за данный период в числовом эквиваленте. В случаях с меньшей активностью, оставляем исходный вариант.
Вывод архива на WordPress
Мы создали новый файл для карты сайта используя архив WP (sitearchives.php). Теперь необходимо залить это все в вашу тему на сервере, или локальном компьютере.
Добавляем новую страницу в админке, с любым названием «Архив», «Карты», «Смеркалось» (здесь есть где развернуться вашей фантазии и остроумию). С правой стороны есть атрибуты страницы, где необходимо выбрать «Шаблон», данной страницы.
Следующий шаг «Опубликовать». Попивая вкусный кофе, любуемся результатом – новая карта сайта отсортированная по месяцам.
Как видите, процесс занял у нас пятнадцать минут.
Если же возникли, какие либо сложности, вопросы, пожелания, вы всегда можете написать комменты. Постараюсь ответить в кротчайшие сроки. До новых встреч.