HTML карта сайта на WordPress
Существует достаточно много плагинов, которые строят карту сайта HTML. Но, может быть, вы хотите добавить какие-то специфические особенности для карты вашего сайта. Например, включить или исключить определенные типы заметок и страниц, показать таксономию, и так далее. Поэтому будет полезно создать шаблон карты сайта в своей теме и использовать его.
В действительности, очень полезно использовать карту сайта HTML как часть темы. В таком случае карту сайта можно использовать и на странице WordPress для ошибки 404. Чтобы сделать карту сайта HTML частью темы надо создать папку partials в папке вашей темы. В папке partials создаем создаем файл с именем sitemap.php.
Копируем в него следующий код и правим его в соответствии со структурой своего сайта:
Теперь там, где нужно вывести HTML карту сайта в теме WordPress вставляем следующий код:
Чтобы сделать шаблон для карты сайта нужно скопировать файл page.php и переименовать копию в page-sitemap.php. Затем открываем его и ниже вызова функции the_content(); добавляем упомянутый ранее вызов get_template_part(). Теперь переходим в начало файла и после открывающего тега <?php (но перед вызовом get_header()), добавляем комментарий:
В действительности, очень полезно использовать карту сайта HTML как часть темы. В таком случае карту сайта можно использовать и на странице WordPress для ошибки 404. Чтобы сделать карту сайта HTML частью темы надо создать папку partials в папке вашей темы. В папке partials создаем создаем файл с именем sitemap.php.
Копируем в него следующий код и правим его в соответствии со структурой своего сайта:
<h2 id="authors">Authors</h2>
<ul>
<?php
wp_list_authors(
array(
'exclude_admin' => false,
)
);
?>
</ul>
<h2 id="pages">Страницы</h2>
<ul>
<?php
// Страницы, которые надо исключить из карты сайта добавляем к exclude здесь
wp_list_pages(
array(
'exclude' => '',
'title_li' => '',
)
);
?>
</ul>
<h2 id="posts">Заметки</h2>
<ul>
<?php
// Категории, которые надо исключить, добавляем к exclude здесь
$cats = get_categories('exclude=');
foreach ($cats as $cat) {
echo "<li><h3>".$cat->cat_name."</h3>";
echo "<ul>";
query_posts('posts_per_page=-1&cat='.$cat->cat_ID);
while(have_posts()) {
the_post();
$category = get_the_category();
// Ссылку на заметку выводим только один раз, даже если она указана в нескольких категориях
if ($category[0]->cat_ID == $cat->cat_ID) {
echo '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
}
}
echo "</ul>";
echo "</li>";
}
?>
</ul>
Теперь там, где нужно вывести HTML карту сайта в теме WordPress вставляем следующий код:
<?php get_template_part('/partials/sitemap'); ?>
Чтобы сделать шаблон для карты сайта нужно скопировать файл page.php и переименовать копию в page-sitemap.php. Затем открываем его и ниже вызова функции the_content(); добавляем упомянутый ранее вызов get_template_part(). Теперь переходим в начало файла и после открывающего тега <?php (но перед вызовом get_header()), добавляем комментарий:
/*
Template Name: Карта сайта HTML
*/