HTML карта сайта для WordPress — как ее сделать без помощи плагинов

Здравствуйте, уважаемые читатели блога Goldbusinessnet.com! Сегодня хочу предложить решение очередной задачи по оптимизации WordPress. Напомню, что с целью настройки и ускорения индексации сайта необходимо создать карту сайта в формате XML для поисковых ботов.

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

HTML карта для сайта или блога WordPress

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

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

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

Простой вариант sitemap в формате HTML

Ну, а теперь переходим непосредственно к вопросу о том, как сделать карту сайта на WP без плагинов, то есть, посредством PHP-кода, который используется в основных шаблонах большей части движков. Сначала создадим простенькую карту, чтобы вы поняли суть процесса.

Любые изменения в файлах сайта лучше производить с помощью специализированного софта. Я советую применять для этих целей связку FTP-клиент FileZilla (для соединения с сервером вашего хостинга) + продвинутый блокнот Notepad plus plus (для непосредственного редактирования).

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

После того, как вы тем или иным способом получите доступ к удаленному серверу, где «живет» веб-сайт, с помощью блокнота-редактора Notepad++ откройте файл page.php вашей темы (этот шаблон обычно отвечает за вывод стандартной статической страницы блога Вордпресс). Ежели на вашем хостинге единственный сайт, то этот файл, скорее всего, можно найти следуя по пути:

«public_html» - «имя домена» - «wp-content» - «themes» - «название темы» - «page.php»

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

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

<?php
/**
 * The template for displaying all pages
 * This is the template that displays all pages by default.
 * Please note that this is the WordPress construct of pages
 * and that other 'pages' on your WordPress site will use a
 * different template.
 *
 * @since Tiny Forge 1.0
 */
 
get_header(); ?>
   <div id="primary" class="site-content">
       <div id="content" role="main">
          <article id="post-<?php the_ID(); ?>" <?php post_class(); ?> >
           <?php while ( have_posts() ) : the_post(); ?>
              <?php get_template_part( 'content', 'page' ); ?>
              <?php comments_template( '', true ); ?>
           <?php endwhile; // end of the loop. ?>
          </article><!-- #post -->
       </div><!-- #content -->
   </div><!-- #primary -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>

Далее нужно скопировать содержание page.php и вставить его в map.php, после чего изменить последний соответствующим образом. Каким образом это сделать, мы сейчас и разберем на примере создания sitemap по выше представленному образцу. Имейте ввиду, что содержание вашего файлика page.php может различаться с вариантом, предложенным мною.

Поэтому важно понять принцип редактирования. В шаблонах вашей темы могут быть свои классы и идентификаторы (class и id), отвечающие за оформление контента, отличные от тех, которые вы наблюдаете в составе выше расположенного кода. Их стилевые свойства могут влиять на внешний вид sitemap, а потому, скорее всего, придется произвести отладку дизайна с помощью CSS.

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

Рассматриваем далее наш пример. Оставляем те строчки, которые определяют основную HTML-разметку странички и будем менять только содержимое, находящееся между открывающим и закрывающим тегом article (16 — 19 строки). Первым делом обратите внимание на начало (16) и конец (19) цикла, которые определяют вид выводимого контента.

<?php while ( have_posts() ) : the_post(); ?>
<?php endwhile; // end of the loop. ?>

Мы их удалять не будем, поскольку для отображения ссылок на материалы, нужных нам, также работает циклическая функция. В данном случае внутри цикла находятся две строки (17 и 18):

<?php get_template_part( 'content', 'page' ); ?>
<?php comments_template( '', true ); ?>

Функцию вывода комментариев («comments_template») удаляем сразу, ведь это лишний контент для карты. А вот в отношении строки 17 («get_template_part») необходимо сделать пояснение, чтобы все было понятно. Дело в том, что во многих современных темах WordPress различные веб-страницы, в том числе статические, могут формироваться с помощью нескольких шаблонов.

Этот случай не исключение. Строка 17 как раз и содержит код вызова добавочного шаблона content-page.php, отвечающего за отображение некоторых составляющих страницы, в число которых входит и функция вывода заголовка, который вы прописываете в редакторе админки. Обычно она заключена в соответствующий тег:

<h1 class="entry-title"><?php the_title(); ?></h1>

Но ведь такая конструкция предназначена для автоматического формирования заглавия любой странички, которую вы создаете на своем блоге. В нашем случае мы пытаемся создать особый шаблон, где заголовок будет постоянным. Посему можно просто прописать его в формате HTML над строкой начала цикла (одновременно удалив «get_template_part»):

<h1>Карта сайта</h1>

Над ним я добавил функцию, определяющую число ссылок на статьи, которые будут выводиться. В качестве значения «showposts» можно поставить любое число:

<?php query_posts('showposts=1000'); ?>

Итак, мы удалили содержимое цикла, выводящее контент обычной статической вебстраницы, но его надо чем-то заменить, иначе HTML-карта будет пуста. Так как содержание sitemap отличается наличием множества ссылок, которые ведут на посты блога, то вместо строк 17 и 18 вставляем код, который будет выводить эти самые линки на статьи:

<a href="<?php the_permalink() ?>"><?php the_title(); ?></a>

Но это еще не все. Чтобы обеспечить возможность отображения материалов в виде вертикального списка, задать стили CSS и красиво оформить все это дело через присвоение свойств классам и идентификаторам, заключим все пространство вывода ссылок в контейнер, определяемый тегом ul, а ссылки поместим в тег li:

<?php
/**
 * The template for displaying all pages
 * This is the template that displays all pages by default.
 * Please note that this is the WordPress construct of pages
 * and that other 'pages' on your WordPress site will use a
 * different template.
 *
 * @since Tiny Forge 1.0
 */
  
get_header(); ?>
<div id="primary" class="site-content">
       <div id="content" role="main">
          <article id="post-<?php the_ID(); ?>" <?php post_class(); ?> >
             <?php query_posts('showposts=1000'); ?>
			 <h1>Карта сайта</h1>
             <ul>
             <?php while ( have_posts() ) : the_post(); ?>
               <li>
                <a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
               </li>
             <?php endwhile; // end of the loop. ?>
             </ul>
          </article><!-- #post -->
       </div><!-- #content -->
   </div><!-- #primary -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>

Стиль оформления вывода ссылок будет применен по тем свойствам, которые прописаны для селекторов ul и li вашей текущей темы в файле style.css. Если по каким-то причинам вас не устроит такой вид, то существует возможность заключить весь контент в основополагающий контейнер div и определить для него какой нибудь класс, например class=»html_sitemap»:

<?php
/**
 * The template for displaying all pages
 * This is the template that displays all pages by default.
 * Please note that this is the WordPress construct of pages
 * and that other 'pages' on your WordPress site will use a
 * different template.
 *
 * @since Tiny Forge 1.0
 */
  
get_header(); ?>
   <div id="primary" class="site-content">
       <div id="content" role="main">
          <article id="post-<?php the_ID(); ?>" <?php post_class(); ?> >
              <?php query_posts('showposts=1000'); ?>
			  <div class="html_sitemap">
			  <h1>Карта сайта</h1>
               <ul>
                 <?php while (have_posts()) : the_post(); ?>
                  <li>
                    <a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
                  </li>
                 <?php endwhile;?>
               </ul>
              </div>
          </article><!-- #post -->
       </div><!-- #content -->
   </div><!-- #primary -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>

Теперь работа почти закончена. Но если вы читали статью о создании специальной страницы в WP, то знаете, что для того, чтобы связать созданный шаблон со страницей, необходимо сначала определить его название. Для этого некоторым образом изменим содержание шапки:

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

Вот теперь у нас готов простенький шаблон карты сайта для посетителей:

<?php
/*
Template Name: Карта
*/
?>
 
<?php get_header(); ?>
   <div id="primary" class="site-content">
       <div id="content" role="main">
          <article id="post-<?php the_ID(); ?>" <?php post_class(); ?> >
              <?php query_posts('showposts=1000'); ?>
			  <div class="html_sitemap">
			  <h1>Карта сайта</h1>
               <ul>
                 <?php while (have_posts()) : the_post(); ?>
                  <li>
                    <a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
                  </li>
                 <?php endwhile;?>
               </ul>
              </div>
          </article><!-- #post -->
       </div><!-- #content -->
   </div><!-- #primary -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>

В принципе, такой шаблон можно использовать для любой темы. Однако, заключительным шагом нужно еще в админке WordPress зайти в раздел «Страницы» — «Добавить новую». Там в поле для заголовка название странички не прописываем, поскольку для нашего образца оно будет указано непосредственно в созданном шаблоне, а вот настроить постоянную ссылку необходимо.

Далее из выпадающего меню «Шаблон» выбираем нужный вариант (в нашем примере «Карта»). Теперь файл map.php связан со страницей и WordPress будет знать, к какому шаблону следует обращаться для ее отображения в браузере:

Вот теперь все. На всякий случай даю набор свойств CSS для sitemap, возможно, они и подойдут:

.html_sitemap H1 {font-size:20px; margin-bottom:25px}
.html_sitemap ul {list-style-type: circle; line-height: 1.5}
.html_sitemap li a:hover {color:#fea02d}
.html_sitemap li a {color: #984802; font-weight: bold; text-decoration:none}

Если же пожелаете их немного изменить, то вы вволю можете поэкспериментировать используя инструмент разработчика, имеющийся в любом современном браузере и вызываемый нажатием клавиши F12, прообразом которого является одно из лучших расширений Mozilla Firefox, которое позволяет производить все редактирование без реальных изменений в файлах. После того, как добьетесь нужного результата онлайн, внесите полученные стили в файл style.css и дело в шляпе.

Как создать полную HTML карту сайта для Вордпресс

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

Я когда-то находился в подобной ситуации и смотрел на php-файлы как баран на новые ворота. Но постепенно научился различать те или иные функции, отвечающие за определенные области применения. В этом очень помог и до сих пор помогает Codex WordPress. Я даже склоняюсь к мысли выделить отдельную рубрику на блоге для изучения основ PHP, поскольку начинающие вебмастера часто встречаются с серьезными трудностями при редактировании файлов темы.

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

С тем, чтобы добиться возможности более тонкой настройки, используем для наших целей файл function.php (напомню, он находится в корневой директории вашей темы), который позволяет реализовывать самые нетривиальные задачи. Для этого подключитесь к серверу с помощью той же упомянутой мною ранее в этой с статье программы Файлзилла:

Для начала откроем его в том же редакторе Нотепад плюс плюс (с этой целью подведите курсор к function.php, нажатием правой кнопки мышки вызовите контекстное меню и выберите из него «Просмотр/Правка»). Далее вставьте в него вот такой фрагмент:

function sp_html_sitemap() {
    $category = true;        // true - отображать блок с постами, false - нет
    $categoryExclude = ''; // ID категорий через запятую, которые надо исключить
    $categoryEmpty = true; // true - не показывать пустые категории, false - показывать
    $page = false;           // true - отображать блок со страницами, false - нет
    $pageExclude = '';  // ID страниц через запятую, которые надо исключить
    $author = false;         // true - показывать блок с авторами, false - нет 
    $authorExcludeAdmin = false; // true - исключить пользователя с логином admin, false - нет 

    $result = '<div class="html_sitemap">';

	if ($page) {
        $result .= '<h2>Страницы</h2><ul>';
        $result .= wp_list_pages(
            array(
                'exclude' => $pageExclude,
                'title_li' => '',
                'echo' => false,
            )
        );
        $result .= '</ul>';
    }

    if ($category) {
        $cats = get_categories(array(
            'orderby' => 'name',
            'hierarchical' => false,
            'exclude' => $categoryExclude,
            'hide_empty' => $categoryEmpty,
        ));

        $result .= '';

        foreach ($cats as $category) {
            $result .= '<li> <a href="'.get_category_link($category->cat_ID).'">'.$category->name.'</a>';
            $result .= '<ul>';
            query_posts(array('cat' => $category->cat_ID,'showposts'=>1000));
            while (have_posts()) {
                the_post();
                $cat = get_the_category();
                if ($cat[0]->cat_ID == $category->cat_ID) {
                    $result .= '<li>';
                    $result .= '<a href="'.get_permalink().'" rel="bookmark" title="'.get_the_title().'">'.get_the_title().'</a>';
                    $result .= ($categoryDate)?' <span class="time">('.get_the_time('d.m.Y').')</span>':'';
                    $result .= '</li>';
                }
            }
            $result .= '</ul></li>';
        }
        $result .= '</ul>';
    }

    $result .= '</div>';
    wp_reset_query();
    echo $result;
}

Преимущество HTML sitemap, реализованного при содействии замечательного файла function.php состоит в том, что мы получаем гибкий вариант. Гибкость его заключается в том, что вы можете в будущем настроить все по своему желанию. Самые верхние строчки и позволяют внести нужные изменения даже без базовых знаний языка PHP (комментарии, выделенные зеленым, по-моему, достаточно информативны и подскажут вам, что и как надо указать в том или ином случае).

Например, вы в силах исключить отдельные категории и вебстраницы, перечислив их числовые идентификаторы (как определить ID рубрик и страниц в админ-панели WordPress) через запятую (если исключать ничего не надо, то просто не заполняете место между одинарными кавычками):

$categoryExclude = '';
$pageExclude = '2794, 4366, 12910';

Скажем, логично будет исключить саму страницу «Карта», вебстраницу поиска на сайте (от Google или Yandex), чтобы читатели не любовались на пустое место в недоумении. Если такие странички отсутствуют, то оставьте все как есть.

Дальше берем за основу файл map.php, созданный ранее для простейшего варианта, где вместо фрагмента, заключенного между тегами article, вставляем функцию вызова HTML карты:

<?php sp_html_sitemap(); ?>

Заключаем ее вместе с заголовком в контейнер div с классом для возможности настройки стилей, в итоге получаем следующий код:

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

<?php get_header(); ?>
<div id="primary" class="site-content">
        <div id="content" role="main">
          <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
		    <div class="smap">
            <h1>Карта сайта</h1>
            <?php sp_html_sitemap(); ?>
			</div>
          </article>
        </div><!-- #content -->
    </div><!-- #primary -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>

Ну и пример стилей CSS для полной карты вы также можете использовать:

.smap h1 {font-size:20px; margin-bottom:25px}
.html_sitemap ul li{list-style-type:circle; margin-left:25px; line-height:1.3; margin-bottom:5px}
.html_sitemap li ul{margin:10px 0 20px 10px}
.html_sitemap li a{color:#984802; font-weight:bold}
.html_sitemap li ul a{font-weight:normal}
.html_sitemap li a:hover{color:#fea02d}

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

Поделиться с друзьями
Игорь Горнов

Создатель и администратор сайта Goldbusinessnet.com. Участник нескольких успешных проектов и автор более 1000 статей о работе в интернете, создании сайтов, полезных программах и сервисах.

Работа в интернете
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.

  1. Ольга

    Добрый день, установлена дочерняя тема, в ней приведенный код не работает. Не могу исключить рубрики из html карты сайта. Что можно сделать?

    Ответить
    1. Игорь Горнов автор

      Ольга, попробуйте воспользоваться плагином Google XML Sitemaps, а также, возможно, Вам поможет этот материал.

      Ответить
  2. Наталья

    Ясно) Спасибо)

    Ответить
  3. наталья

    Да мне и не надо редактировать шаблон, у меня с шаблоном все в порядке. Я спрашивала, как вашу «простенькую» карту сайта отредактировать, чтоб в ней категории появились…

    Ответить
    1. Игорь Горнов автор

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

      Ответить
  4. Наталья

    Так я ж об этом и спрашиваю, как сделать ее более сложной с категориями, но не так как вы предлагаете во втором варианте через function.php, а в так же через php. У меня раньше на сайте стояла через php, но с категориями все как положено, сейчас поменяла шаблон и пытаюсь сделать теперь так же, но «старая» карта становится криво. Пыталась редактировать ее код, но знаний в сфере html, немного, поэтому ломается сайт. Вот и поставила пока вашу простенькую, только хочу отредактировать ее так, чтобы в ней показывались категории как в моей прошлой.

    Ответить
    1. Игорь Горнов автор

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

      Ответить
  5. Наталья

    Добрый день, Игорь. Скажите, а как можно в первом варианте, где простенькая карта сайта через php сделать, чтобы в ней отображались категории?

    Ответить
    1. Игорь Горнов автор

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

      Ответить
  6. Николай

    Здравствуйте! я новичок в вордпрессе. всегда работал с опенкартом.
    Игорь , а данный способ подойдет для темы Traveler?
    и будут все поисковики видеть этот способ, (google? yandex и тд..) , насколько он эффективней чем плагины?
    Спасибо!

    Ответить
    1. Игорь Горнов автор

      Николай, если тема вордпрессовская, то должно сработать. На всякий случай, поэкспериментируйте на локальном сервере или на тестовом домене.

      Ответить
      1. Николай

        Спасибо! буду пробовать!

        Ответить
  7. Василий

    Это хороший плагин, я его давно использую на своем сайте.

    Ответить
  8. Максим Громов

    Здравствуйте Игорь! Читал, что dragon design очень сильно нагружает хостинг. Поставил себе русский плагин hierarchical html sitemap от команды wp-puzzle.com. Вроде как утверждают разработчики, это самый легкий и быстрый плагин для создания карты сайта на сегодняшний день! Мне понравилось, что при построении списка он выводит все рубрики и подрубрики с учётом вложенности.
    Не попадался вам на глаза это плагин? Кстати, узнал о нём сначала с авторитетного англоязычного ресурса wpbeginner.com, а только потом уже нашёл его рекомендации на русскоязычных ресурсах

    Ответить
    1. Игорь Горнов автор

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

      Ответить
  9. Алла

    Простите за вопрос чайника. А этот файл надо сохранить как Sitemap.xml и сохранить его в /public_html? Этого будет достаточно, чтобы Яндекс проиндексировал мой сайт?

    Ответить
    1. Игорь Горнов автор

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

      https://goldbusinessnet.com/dvizhok-wordpress/xml-google-sitemaps/

      А если по сути, то, действительно, создается файл sitemap.xml, только помещается он в корневую директорию Вашего сайта, весь путь обычно имеет такой вид:

      public_html/ваш_сайт/sitemap.xml
      Ответить
  10. Лариса

    Здравствуйте, Игорь! Хочу исключить из карты сайта одну из рубрик (она будет на отдельной странице), но не понимаю, как найти ID этой рубрики?

    Ответить
    1. Игорь Горнов автор

      Лариса, прочтите мой ответ на комментарий одного из читателей, перейдя по ссылке:

      http://goldbusinessnet.com/optimizatsiya-i-raskrutka-saita/nastrojka-wordpress-wp-rubriki-kategorii-the-excerpt/#comment-42388

      Это сообщение является прямым ответом на Ваш вопрос.

      Ответить
      1. Лариса

        Игорь, спасибо за ответ, я уже разобралась и привела свою карту сайта практически к своему идеалу)
        Кроме того, я избавилась от лишнего плагина с генератором карты за счет работы с Oll in SEO Pack.

        Ответить
  11. Роман

    Create new file, а не Create new fail 🙂
    Поищите по странице вторую фразу, поймете, где ошибка.

    Ответить
    1. Игорь Горнов автор

      Спасибо, Роман, исправил.

      Ответить
  12. Игорь

    Спасибо Игорь!
    Все работает.

    Ответить
    1. Игорь Горнов автор

      Отлично, тезка! 🙂

      Ответить
      1. Денис

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

        Ответить
        1. Игорь Горнов автор

          Денис, выслал.

          Ответить
          1. Денис

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

  13. Игорь

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

    Ответить
    1. Игорь Горнов автор

      Тезка, попробуйте таким образом. Найдите в коде полной карты сайта строку:

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

      Для вывода ссылки вместо:

      .$cat->cat_name.

      Вставьте:

      <a href="'.get_category_link($category->cat_ID).'">'.$cat->cat_name.'</a>

      Вся строчка получится такого вида:

       echo '<li>'."\n".'<strong>Рубрика:</strong> '<a href="'.get_category_link($category->cat_ID).'">'.$cat->cat_name.'</a>''."\n";
      Ответить
      1. Игорь

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

        Ответить
        1. Игорь Горнов автор

          Странно… Игорь, а Вы корректно все сделали? А название рубрики правильно отображается?

          Ответить
          1. Игорь

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

          2. Игорь Горнов автор

            Игорь, послал Вам на e-mail альтернативный вариант с решением проблемы.

          3. artem

            здравствуйте. отправьте, пожалуйста и мне альтернативный вариант.

          4. Игорь Горнов автор

            Отправил на e-mail.

          5. Виктор

            Здравствуйте, если не трудно отправьте мне пожалуйста тоже.

  14. я

    Плагин от share42 наезжает на текст. Читать неудобно, писать коммент тоже неудобно. У тебя наверное квадратный монитор?

    Ответить
    1. Игорь Горнов автор

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

      Ответить
  15. Виктор

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

    Ответить
    1. Игорь Горнов автор

      Виктор, вообще-то, если Вы точно следовали моим инструкциям, такого быть не должно. Значит, где-то в function.php темы стоит ограничение на вывод количества постов. Конкретнее сказать, к сожалению, не берусь, ведь темы у всех разные.

      Ответить
  16. Роман Рей

    Кстати Вы сейчас какую карту сами используете? На основе плагина, или ту что представлена в описании?

    Ответить
    1. Игорь Горнов автор

      Ту, что представлена в описании.

      Ответить
  17. Роман Рей

    А если нет page.php? Тема Eino

    Ответить
    1. Игорь Горнов автор

      Роман, если нет файла page.php, то следующим шаблоном, к которой обратится WordPress, будет index.php. Этот шаблон должен быть обязательно, делайте на его основе.

      Ответить
      1. Роман Рей

        Понятно, спасибо. Будем через Индекс работать

        Ответить
  18. Anton

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

    Ответить
  19. Alexander

    Уже разобрался:) Я вставил Ваш код с 1-5 и с 11-50 строки (из последнего скриншота)в контейнер , который выводит контент в моей теме, и все:)

    Ответить
    1. Игорь Горнов автор

      Александр, значит все ОК и моя помощь не нужна?

      Ответить
      1. Alexander

        Да все ОК:) Ваша статья мне помогла, спасибо. Правда, как видите, в моем блога на странице «Карта сайта» перед рубриками стоят точки, обозначающие список, так вот мне бы хотелось чтобы они только перед постами стояли, вчера так и не нашел как это сделать, если подскажите как — буду признателен, если нет — мне и так сойдет:)

        Ответить
        1. Игорь Горнов автор

          Alexander, прежде всего, пропишите дополнительное правило стилей в файл style.css:

          .karta {list-style-type:none;}

          Если Вы делали карту по рекомендациям в статье, то в коде полной карты на строках 12 и 19 добавьте этот класс к тегу ul:

          <ul class="karta">

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

          Ответить
          1. Alexander

            Все верно! Спасибо за помощь:)

  20. Alexander

    Здравствуйте. Воспользовался Вашей статьей для создания карты сайта, спасибо. Правда есть одна проблемка. Я пробовал применить эту карту на своем блоге на денвере — все получилось, попробовал применить на действующем блоге (адрес которого я указал в соответствующем поле) со стандартной темой вордпресса: все тоже самое только вот почему-о не отображаются русские символы в заголовках заключенных в теги h3. Может вы знаете в чем причина?

    Ответить
  21. svargan

    У меня еще вопрос. Игорь может вы в курсе возможно ли поменять плагин Ozh’ Better Feed на код?

    Ответить
    1. Игорь Горнов автор

      Честно говоря, не слышал о таком плагине.

      Ответить
      1. svargan

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

        Ответить
        1. Игорь Горнов автор

          А, спасибо Дмитрий, за такое дополнение, думаю, для читателей важная информация. Если этот плагин небольшой и постоянно обновляется, может, и не стоит его заменять кодом, по крайней мере, пока?

          Ответить
  22. svargan

    Приветствую вас Игорь! Давненько не общались у меня сайдбар вниз слетает может, что с дивами не то. Есть ли возможность решить эту задачу?
    С ув. Дмитрий

    Ответить
    1. svargan

      Так решил задачу — див просто не там где нужно закрыл, забыл сайдбар в него включить, оно и понятно, что он вниз улетел после основного блока. Благодарю за информацию у меня минус еще один плагин и того из активный осталось 8) Кстати я all seo pack на обном блоге заменил php кодом при добавлении постов произвольными полями пользуюсь в них и задаю мета теги, тестирую время покажет.

      Ответить
      1. Игорь Горнов автор

        Приветствую, svargan. Рад снова пообщаться. All in One Seo Pack, безусловно, можно заменить кодом, как, в принципе, и все плагины. Но просто для SEO он реализует много функций, я придерживаюсь и в этом вопросе правила золотой середины, используя только те плагины, которые не несут большую нагрузку с одной стороны, и реализуют множество опций с другой. Хотя почему бы не протестировать, нам, вебмастерам, приходится это делать постоянно.

        Ответить
        1. svargan

          Я так же пользовался плагином platunum seo pack, в нем немного больше наворотов чем all seo, ну тут на любителя как говорится. Я еще хочу все категории и метки мета тэгами всеми упаковать (заголовки, описания и ключи), тоже тест провести интересно как раздача в посковиках будет на такие цацки. Игорь всегда рад пообщаться, до связи.

          Ответить
          1. Игорь Горнов автор

            Platinum у меня тоже стоял, однако он давно не обновлялся, поэтому я и перешел на All in One.

  23. Ruson

    Ок спасибо Игорь.

    Ответить
  24. Ruson

    Здравствуйте Игорь, я так понял это не sitemap.xml имеется ли вариант создания карты .xml без плагинов?
    Cgfcb,j

    Ответить
    1. Игорь Горнов автор

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

      Ответить
  25. Ольга

    Да, очень интересно.
    У меня пока работает Dagon Design Sitemap Generator. Отлично, кстати, работает (не в пример некоторым плагинам). Но постепенно заменяю их кодами в шаблоне.
    Страшновато, конечно, ковыряться в кодах, получается не с первого раза. Чаще всего блог «слетает». Но надо. Скорость загрузки блога- показатель приоритетный.

    Ответить
    1. Игорь Горнов автор

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

      Ответить
  26. Юрий

    Статья полезная и нужная! Я как раз избавляюсь от лишних плагинов. Теперь знаю, как избавиться еще от одного плагина.

    Ответить
  27. Василий

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

    Ответить
    1. Игорь Горнов автор

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

      Ответить
  28. Саня

    Очень кстати Ваша статейка. Установил тему, в которой предусмотрен файл карты сайта. Но я, как и Вы, тоже пытаюсь дорыться «до руды». После неоднократного редактирования темы карта сайта стала показывать кол-во статей, равное настройкам отображения статей на блоге (в админке).
    Долго ковырял, потом решил заглянуть на «умные блоги» (Ваш — первый в списке), и, о чудо, Ваша последняя статья именно об этом.
    Огромное СПАСИБО, теперь моя карта сайта приобрела нужную форму.

    Ответить
    1. Игорь Горнов автор

      Спасибо, Саня, за качественные комментарии, которыми Вы наградили блог Goldbusinessnet. Я очень рад, что Вы нашли именно то, что искали. Честно говоря, это добавляет запала для продолжения выбранного направления.

      Ответить
  29. Алексей

    Заинтриговал… Изучать начал html и css. Теперь с помощью вашего поста доберусь и до карты. Раз карта можно сделать без плагина — сделаю. Так, что статья в тему

    Ответить
    1. Игорь Горнов автор

      Хорошо, Алексей. Задавайте вопросы, если что-то непонятно.

      Ответить
  30. Ольга

    Спасибо за информащию! А как поставить кнопки сощ.сетей сбоку страницы сайта-как у вас?

    Ответить
    1. Игорь Горнов автор

      Ольга, я отправил Вам на e-mail письмо со ссылкой. Хотя в скором времени я начну публикации о кнопках соц.сетей и там тоже собираюсь описать этот сервис.

      Ответить