Sozdaiblog.ru
Назад

Как сделать карту сайта Без Плагинов?

Опубликовано: 23.05.2013
Время на чтение: 13 мин
17
7

Летнего настроения всем читателям — Sozdaiblog.ru!

Сегодня Вы узнаете, как сделать карту сайта без плагинов.

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

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

Что же случилось?

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

Вот мне и пришлось икать способ вывода карты сайта без плагина. К счастью решение нашлось быстро, а реализовалось оно ещё быстрей.

Итак.

Карта сайта без плагинов.

Чтобы сделать карту сайта на WordPress без плагинов, Вам потребуется текстовый редактор Notepad++ и любой FTP-клиент. Лично я выбираю FileZilla (как настроить ftp-клиента).

Далее при помощи FTP-клиента докапываемся до папки с файлами Вашей активной темы оформления, находим там page.php и копируем (переносим, дублируем) на свой компьютер.

Файл page.php отвечает за вывод статических страниц Вашего Веб-ресурса. Из него то мы и будем делать карту сайта.

После копирования, меняем его название на map.php и закидываем обратно.

Теперь самое сложное. Вам придётся открыть на редактирование map.php и внести кое-какие изменения.

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

  <div id="content">
            <div id="content_inside">

                <div class="blog_box">

                    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>

                        <h1><?php the_title(); ?></h1>

                        <?php the_content(); ?>

                        <br /><br />

                        <?php //comments_template(); ?>

                    <?php endwhile; else: ?>

                        <h3>К сожалению, по вашему запросу ничего не найдено.</h3>

                    <?php endif; ?>

                    <div class="clear"></div>
                </div><!--//blog_box-->

                <div class="clear"></div>

            </div><!--//content_inside-->

        </div><!--//content-->

<?php get_sidebar(); ?>
<?php get_footer(); ?>

А это то, что стало после редактирования:

<?php
/*
Template Name: Карта
*/
?>
<?php get_header(); ?>

        <div id="content">
            <div id="content_inside">

                <div class="blog_box">

    <h3>Все посты:</h3>
    <ul>
    <?php
    $cats = get_categories('exclude='); //***Сюда вставьте через запятую
     ID категорий, которые желаете исключить.
     Если таких категорий нет, то оставьте поле пустым.

    foreach ($cats as $cat) {
      echo '<li>'."\n".'<strong>Категория:</strong> '.$cat->cat_name.''."\n";
      echo '<ul>'."\n";

      query_posts('posts_per_page=-1&cat='.$cat->cat_ID); //-1 показывать все статьи категории.
               1 показывать последние статьи.

         while(have_posts()): the_post();
         $category = get_the_category();
            if ($category[0]->cat_ID == $cat->cat_ID) {?>
            <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
       <?php }
        endwhile;
       ?>
      </ul>
      </li>
    <?php } ?>
    </ul>
    <?php
    wp_reset_query();
    ?>

                </div><!--//blog_box-->

                <div class="clear"></div>

            </div><!--//content_inside-->

        </div><!--//content-->

<?php get_sidebar(); ?>
<?php get_footer(); ?>

Что я сделал? Давайте разберёмся!

Для начала я связал новую страницу (map.php) с существующей темой оформления вставив в самое начало следующий код:

<?php
/*
Template Name: Карта
*/
?>

Затем я нашёл то место, где начинается вывод контента с применением определённого класса (class) присвоенного разработчиками. В моём случае:

<div class="blog_box">

Удалив все циклы контейнера (до закрывающего тега </DIV>) я вставил свой код:

<h3>Все посты:</h3>
    <ul>
    <?php
    $cats = get_categories('exclude='); //***Сюда вставьте через запятую
          ID категорий, которые желаете исключить.
           Если таких категорий нет, то оставьте поле пустым.

    foreach ($cats as $cat) {
      echo '<li>'."\n".'<strong>Категория:</strong> '.$cat->cat_name.''."\n";
      echo '<ul>'."\n";

      query_posts('posts_per_page=-1&cat='.$cat->cat_ID); //-1 показывать все статьи категории.
       1 показывать последние статьи.
         while(have_posts()): the_post();
         $category = get_the_category();
            if ($category[0]->cat_ID == $cat->cat_ID) {?>
            <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
       <?php }
        endwhile;
       ?>
      </ul>
      </li>
    <?php } ?>
    </ul>
    <?php
    wp_reset_query();
    ?>

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

На этом редактирование окончено. Осталось показать карту сайта людям.

Для этого, обычным способом в WordPress, создайте новую статическую страницу.  Напишите необходимый заголовок и в режиме редактирования отыщите справа виджет «Атрибуты страницы». Из выпадающего списка выберите «Карта» и опубликуйте страницу:

как сделать карту сайта

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

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

На сегодня, это всё. До новых встреч!

С уважением, Денис Черников!

Поделиться
Похожие записи
Комментарии:
  • Константин
    Опубликовано: 22.06.2013 Ответить на сообщение

    Спасибо Денис! Сейчас испытаю. Если бы еще миниатюры добавить, вообще бомба.

    • Денис Черников
      Опубликовано: 22.06.2013 Ответить на сообщение

      Пожалуйста, Константин! Миниатюры чего добавить нужно?

  • Олег
    Опубликовано: 23.06.2013 Ответить на сообщение

    А обновляться эта карта сама будет?

    • Денис Черников
      Опубликовано: 23.06.2013 Ответить на сообщение

      А как по-другому?)))

  • Никита
    Опубликовано: 04.08.2013 Ответить на сообщение

    А я просто вывел все записи (список записей блога) на одной странице без разбиения на рубрики, так как некоторые записи имеют принадлежность сразу к двум рубрикам (например, html и css).

    • Денис Черников
      Опубликовано: 04.08.2013 Ответить на сообщение

      Это уже кому как удобней!

  • Никита
    Опубликовано: 04.08.2013 Ответить на сообщение

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

    • Денис Черников
      Опубликовано: 04.08.2013 Ответить на сообщение

      Интересный вопрос, Никита! Если честно, то я не анализировал такие случаи, но склоняюсь к тому, что лучше размещать для одной рубрики.

  • Татьяна
    Опубликовано: 10.09.2013 Ответить на сообщение

    Денис, а файл page.php после установления нового map удалять или нет? Я попробовала, оставила оба. Но страница с картой не отображается. Т.е. сам саqn работает, а когда открываешь карту, то выглядит так, когда все слетает. Т.е. вообще не загружает ничего.

    • Денис Черников
      Опубликовано: 10.09.2013 Ответить на сообщение

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

      • Татьяна
        Опубликовано: 11.09.2013 Ответить на сообщение

        сделала. правда с другим, похожим очень на ваш, код и пришлось повозиться, буквально по строчкам вставляла. Горжусь собой ужасно
        Денис, вопрос не по теме — вот у вас плавающий подвал с кнопками внизу. Он у вас с какого-то другого ресурса подгружается или нет? Нашла сейчас один вариант, но там подгружается со стороннего ресурса, а код на сайте.
        У вас про этот ваш подвал нет ничего почитать?

        • Денис Черников
          Опубликовано: 11.09.2013 Ответить на сообщение

          Молодец, Татьяна!
          Плавающий подвал реализован кодом и подгружается с моего блога! Про это я ещё не писал!

  • Марина
    Опубликовано: 21.11.2013 Ответить на сообщение

    Денис, карта категорий получилась на УРА! Подскажите, а какой код добавить в файл Map.php , чтобы там же была и карта страниц? Заранее спасибо. Марина.

    • Денис Черников
      Опубликовано: 21.11.2013 Ответить на сообщение

      Я рад!
      Добавьте wp_list_pages ('exclude='); перед $cats = get_categories ('exclude='); и всё будет хоккей!

  • Екатерина
    Опубликовано: 08.12.2014 Ответить на сообщение

    Добрый день. Очень полезная статья, но, вот, у меня возникли пару вопросов, которые я никак не могу понять, возможно, вы мне подскажете?
    1.Я читала, что файл с картой сайта должен быть xml, а у Вас получается php или я что-то недопонимаю?
    2.При регистрации сайта в поисковиках, просят добавить ссылку на карту сайта. Как будет выглядеть та самая ссылка или где можно ее посмотреть.
    Делаю все, как у вас написано в этом посте. Спасибо за ответ

    • Денис Черников
      Опубликовано: 09.12.2014 Ответить на сообщение

      Здравствуйте!
      1. У меня есть xml карта. Она редактируется с помощью плагина. А эта карта для людей, а не ПС!
      2. http:// Ваш сайт.ru/sitemap.xml она в корне сайта!

  • Денис
    Опубликовано: 05.10.2015 Ответить на сообщение

    Здравствуйте, воспользовался вашим способом сделал карту сайта без плагина все супер, подскажите что нужно добавить в код чтобы отображалась иерархия в рубриках(у меня на сайте есть подрубрики)

Имя
Укажите своё имя и фамилию
E-mail
Без СПАМа, обещаем
Текст сообщения
Отправляя данную форму, вы соглашаетесь с политикой конфиденциальности и правилами нашего сайта.