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

Автор: | Рубрика: Блог на Wordpress | Обновлено: 2015-03-14 | Создано:
Просмотров: 2070
Как создать карту блога без плагинов

Приветствую!

Сегодня я расскажу, как с помощью кода выводить на странице, которую мы часто называем "Карта блога" или "Все статьи", список опубликованных на блоге статей. Наверно последние три года, а может и больше, у меня на блоге с этой функцией справлялся плагин Dagon Design Sitemap Generator, о нем я писала тут. Ничего плохого об этом плагине я сказать не могу. Единственный, но не смертельный минус - плагин давно не обновлялся его разработчиком. Прошло несколько лет.  Большого влияния на скорость загрузки блога, этот плагин не оказывает, тем не менее, когда есть возможность заменить плагин кодом, я всегда ее использую.

Для реализации вывода всех статей блога на отдельной странице без плагина мы сделаем следующее:

  1. Соединимся с хостингом любым фтп клиентом
  2. Сделаем резервную копию файлов темы, на всякий случай. А в отдельную папку копируем файл page.php для последующего редактирования.
  3. Текстовым редактором Notepad++ внесем правки в файл page.php.
  4. Для новой страницы выберем в качестве шаблона только, что созданный файл.

Это было краткое описание последовательности работы. А теперь я распишу каждый шаг более подробно и с картинками.

Если Вы не знаете, как соединиться с хостингом при помощи клиента FileZilla читайте в статье http://inetsovety.ru/kak-polyzovatysya-filezilla/

Далее заходим в папку сайта (если такова есть), если ее нет, то ищем папку public_html, в ней находим wp-content, а потом открываем themes. Как называется папка с темой, которая установлена на Вашем блоге, знаете только Вы. Сначала я рекомендую скопировать на компьютер, в то место, где Вы храните резервные копии файлов сайта, папку с шаблоном целиком. А потом в другое место на компьютере скопировать файл page.php.

Откройте его программой Notepad++. Обычный блокнот лучше не использовать, т.к. при сохранении могут возникнуть проблемы с кодировкой. Далее я буду показывать Вам редактирование файла page.php простой Вордпресс темы, которую я скачала в сети.

Вот такой код был у меня:

blogmap-1

У Вашей темы должно быть что-то похожее. Главное найдите в файле функции вызова шапки, сайдбара и футера. А остальное мы будем редактировать и удалять.

Поскольку мы создаем файл-шаблон, то это нужно указать непосредственно в файле специальным кодом.

Вот этот код:

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

Его добавляем в самое начало файла до строчки с кодом вызова шапки. Его я стрелочкой выделила на картинке выше.

Что касается названия шаблона, которое прописывается в строчке Template Name: blogmap, то вместо blogmap можете любое другое название прописать, которое Вам больше нравится.

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

<?php if ( function_exists("has_post_thumbnail") && has_post_thumbnail() ) { the_post_thumbnail(array(300,225), array("class" => "alignleft post_thumbnail")); } ?>
<?php the_content('<p class="serif">Читать далее »</p>'); ?>
<?php wp_link_pages(array('before' => '<p><strong>Страницы:</strong> ', 'after' => '</p>', 'next_or_number' => 'number')); ?>

Вместо этого кода, мы добавим код, который выведет список всех статей:

  <div class="blogmap">
       
 <!-- Вывод статей по категориям -->
                        <span class="post-cat"><h2>Статьи по категориям</h2>
 
                        <?php
 
                            $cats = get_categories();
                            foreach ( $cats as $cat ) {
 
                            query_posts( 'posts_per_page=-1&cat=' . $cat->cat_ID );
 
                        ?>
 
                            <h3><?php echo $cat->cat_name; ?></h3>
                            <ul>   
                                <?php while ( have_posts() ) { the_post(); ?>
                                <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
                                <?php } wp_reset_query(); ?>
                            </ul>
 
                        <?php } ?></span>
  <!-- вывод списка страниц -->
                        <span>
                            <h2>Страницы</h2>
                            <ul>
                                <?php
        wp_list_pages('exclude=9999'); //**Сюда вставьте через запятую ID страниц, которые желаете исключить. Если таких страниц нет, то оставьте поле пустым.
    ?>
                            </ul>
                        </span>
 <!-- Начало вывода категорий -->
                        <span>
                            <h2>Категории блога:</h2>
                            <ul>
                                <?php wp_list_categories('title_li='); ?>
                            </ul>
</span>                    
<!-- Начало вывода архивов -->
                        <span> 
                            <h2>Архивы</h2>
                            <ul>
                                <?php wp_get_archives('type=monthly&show_post_count=0'); ?>
                            </ul>
</span>      
                </div>

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

Будьте внимательны, не удалите случайно в исходном коде страницы закрывающегося тэга div, а то будет криво отображаться, а Вы будете ломать голову в чем же дело. Часто удаление дива приводит к сдвигу вниз сайдбара.

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

Публикую код моей страницы полностью с комментариями, возможно кому-то поможет. Смотрите под спойлером.

Код страницы для карты сайта:
<?php
/* 
Template Name: blogmap 
*/ 
?>
<?php get_header(); ?>
<div class="outer" id="contentwrap">
	<div class="postcont">
		<div id="content">	

			<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
			<div class="post" id="post-<?php the_ID(); ?>">
			<h2 class="title"><?php the_title(); ?></h2><!-- Вывод названия страницы -->
				<div class="entry"><!-- класс стилей оформления поста -->
<?php the_content('')  ?><!-- добавляем эту функцию, если нужно вывести на странице текст -->
  <div class="blogmap">
       
 <!-- Вывод статей по категориям -->
                        <span class="post-cat"><h2>Статьи по категориям</h2>
 
                        <?php
 
                            $cats = get_categories();
                            foreach ( $cats as $cat ) {
 
                            query_posts( 'posts_per_page=-1&cat=' . $cat->cat_ID );
 
                        ?>
 
                            <h3><?php echo $cat->cat_name; ?></h3>
                            <ul>   
                                <?php while ( have_posts() ) { the_post(); ?>
                                <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
                                <?php } wp_reset_query(); ?>
                            </ul>
 
                        <?php } ?></span>
  <!-- вывод списка страниц -->
                        <span>
                            <h2>Страницы</h2>
                            <ul>
                                <?php
        wp_list_pages('exclude=9999'); //**Сюда вставьте через запятую ID страниц, которые желаете исключить. Если таких страниц нет, то оставьте поле пустым.
    ?>
                            </ul>
                        </span>
 <!-- Начало вывода категорий -->
                        <span>
                            <h2>Категории блога:</h2>
                            <ul>
                                <?php wp_list_categories('title_li='); ?>
                            </ul>
</span>                    
<!-- Начало вывода архивов -->
                        <span> 
                            <h2>Архивы</h2>
                            <ul>
                                <?php wp_get_archives('type=monthly&show_post_count=0'); ?>
                            </ul>
</span>      
                </div>
	
				</div>
			</div>
			<?php endwhile; endif; ?>
		
		</div>
	</div>
	

<?php get_sidebars(); ?>

</div>
<?php get_footer(); ?>

В этом коде для оформления страницы используются классы, которые прописаны в файле style.css моей темы. У Вашей темы скорее всего они будут другие. Обращайте на это внимание при редактировании.

Сохраняйте изменения в файле. Назовите его новым именем, например blogmap.php. Скопируйте в папку с темой. В ту же папку откуда Вы копировали page.php.

Теперь создайте новую страницу, в правой колонке выберите только что созданный шаблон:

blogmap-2

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

О создании карты блога без плагина я рассказала все. В следующем посте я планирую рассказать, как создать страницу обратной связи без плагина. Не пропустите!

 

С уважением, Виктория – блог inetsovety.ru

Поделиться ссылкой на пост в соц. сетях
Получать уведомления о новых статьях на e-mail
Комментариев: 21 к статье "Как создать карту блога (сайта) без плагинов"
  • Алексей Щукин 2015-06-30 в 14:40

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

    Ответить
  • Виталий Охрименко 2015-03-12 в 22:47

    Спасибо за статью, все получилось. НА один плагин блог стал меньше нагружаться, а эт уже результат. Нравится мне работать по Вашим статьям, четко, лаконично….восхищаюсь

    Ответить
    • Виталий Охрименко 2015-05-31 в 11:15

      Только со стилями не разобрался, у меня с этим вообще проблемы

      Ладно, на новый шаблон перейду придется научиться стили добавлять

      Ответить
  • Константин Кислов 2015-03-12 в 13:22

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

    Ответить
  • Рашида 2014-12-18 в 17:29

    Не дошли еще руки переделать карту сайта кодом — пусть пока работает плагином — жаль что нет информации об изменении скорости загрузки сайта после установки кода

    Ответить
    • Сергей Грицюк 2014-12-27 в 09:48

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

      Ответить
  • seomodern 2014-08-30 в 15:50

    Виктория, Вы проверяли скорость загрузки блога с установленным плагином, а потом с кодом — без использования плагина? Насколько она изменилась?

    Ответить
    • Виктория 2014-08-30 в 17:39

      После удаления плагина не измеряла скорость. Я за один день заменила штук 5 плагинов. Помню, что раньше он до 10% занимал на диаграмме нагрузки среди остальных плагинов.

      Ответить
      • seomodern 2014-08-30 в 17:43

        Может тогда действительно есть смысл прописать кодом. Хотя код коду рознь. Разница с плагином в том, что реализация может отличаться и код может получиться меньшего размера. Плагин в таком случае будет иметь преимущество только в простоте установки. В общем — нужно сравнивать.

        Ответить
  • Юрий Ваценко 2014-08-25 в 12:55

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

    Ответить
    • seomodern 2014-08-30 в 15:42

      Возможно нагрузка заметна, когда именно плагины увеличивают загрузку сайта, если этих плагинов стоит 4-5 десятков. В другом случае, если для экономии времени быстрее установить плагин, то я остановлюсь на этом варианте.

      Ответить
      • Александр 2014-09-30 в 20:51

        Да новерное есть еще один смысл. Большинство плагинов имеют не валидный код и его невозможно поправить. Поэтому проще заменить кодом и получить не так много ошибок блога при проверке в валидаторе W3C

        Ответить
  • Александр 2014-08-25 в 10:01

    Все нашел, попробую использовать этот код. Не знаю почему но пролетел мимо спойлера с кодом

    Ответить
    • seomodern 2014-08-31 в 19:40

      Может стояло указать, что это спойлер и его можно развернуть

      Ответить
  • Александр 2014-08-24 в 18:18

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

    Ответить
    • seomodern 2014-08-31 в 19:41

      Тогда код отдельно нужно корректировать под шаблон

      Ответить
  • Александр 2014-08-23 в 18:53

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

    Ответить
    • Виктория 2014-08-24 в 15:10

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

      Ответить
      • Александр 2014-08-24 в 18:04

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

        Ответить
        • seomodern 2014-08-31 в 19:43

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

          Ответить
          • Александр 2014-09-30 в 20:52

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

            Ответить
Оставить комментарий
Нажмите, чтобы отменить ответ.

Комментарий появится после проверки. Комментарии, содержащие спам и ненормативную лексику будут удалены!