Здравствуйте, друзья. Предлагаю вам ознакомиться с небольшим мануалом на тему: Как создать HTML карту сайта для WordPress блога. Если вы сомневаетесь, нужна вам на блоге HTML карта или нет, то я вам отвечу — нужна и сейчас объясню для чего именно. В отличии от XML карты сайта, которая делается для поисковых систем, HTML карта создается как для пользователей, так и внутренней перелинковки, что положительно сказывается на поисковой оптимизации.
HTML карту для WordPress будем делать без использования плагина. Есть несколько плагинов, способных сделать HTML карту не напрягаясь, но как известно, плагины очень сильно влияют на скорость загрузки блога. Подробнее об этом: 10 способов ускорить WordPress блог. Поэтому имеет смысл отказаться от некоторых плагинов. Это пойдет на пользу блогу. Например я пришел в выводу что красивые таблицы CSS можно очень легко делать и без плагина, но я этого не знал.
Итак, для создания HTML карты нам потребуется создать шаблон страницы. Рекомендую воспользоваться редактором Notepad++, очень удобная штука. Открываем редактор и создаем новый документ Ctrl + N. Устанавливаем кодировку UTF-8 (без BOM). И вставляем в этот документ следующий код:
1
2
3
4
5
6
7
8
9
10
| < ?php
/*
Template Name: sitemap
*/
?>
< ?php get_template_part('content', 'before'); ?>
<div class="content">
< ?php sp_html_sitemap(); ?>
</div><!-- .content -->
< ?php get_template_part('content', 'after'); ?> |
< ?php
/*
Template Name: sitemap
*/
?>
< ?php get_template_part('content', 'before'); ?>
<div class="content">
< ?php sp_html_sitemap(); ?>
</div><!-- .content -->
< ?php get_template_part('content', 'after'); ?>
При изменении файлов сайта всегда делайте их резервные копии. Это позволит избежать ошибок. Всегда можно будет вернуть все в исходное состояние.
Сохраняем созданный файл под именем sitemap.php и при помощи файлового менеджера заливаем в папку с файлами вашей темы. Я пользуюсь файловым менеджером Filezilla. Достаточно прост в использовании. Теперь нам нужно добавить специальный код в файл functions.php, который будет выводить нашу HTML карту на страницу. Разместить код желательно в самом начале файла. Вот этот код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| function sp_html_sitemap() {
$category = true; // показывать блок с постами, false - не показывать, true - показывать
$categoryDate = true; // показывать дату написания поста, false - не показывать, true - показывать
$categoryExclude = '352, 7'; // номера категорий через запятую, что надо исключить, в противном случаи оставить переменную пустой (т.е. два опострофа)
$categoryEmpty = false; // показывать пустые категорий, false - не показывать, true - показывать
$page = false; // показывать блок со страницам, false - не показывать, true - показывать
$pageExclude = '1783, 511'; // номера страниц через запятую, что надо исключить, в противном случаи оставить переменную пустой (т.е. два опострофа)
$author = false; // показывать блок с авторами, false - не показывать, true - показывать
$authorExcludeAdmin = false; // исключить из списка авторов пользователя с логином admin, false - не искючать, true - исключить
$result = '<div>';
if ($category) {
$cats = get_categories(array(
'orderby' => 'name',
'hierarchical' => false,
'exclude' => $categoryExclude,
'hide_empty' => $categoryEmpty,
));
$result .= '<h1>Посты</h1><ul>';
foreach ($cats as $category) {
$result .= '<li><h2><a href="'.get_category_link($category->cat_ID).'">'.$category->name.'</a></h2>';
$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>('.get_the_time('d.m.Y').')</span>':'';
$result .= '</li>';
}
}
$result .= '</ul></li>';
}
$result .= '</ul>';
}
if ($page) {
$result .= '<h1>Страницы</h1><ul>';
$result .= wp_list_pages(
array(
'exclude' => $pageExclude,
'title_li' => '',
'echo' => false,
)
);
$result .= '</ul>';
}
if ($author) {
$result .= '<h1>Авторы</h1><ul>';
$result .= wp_list_authors(
array(
'exclude_admin' => $authorExcludeAdmin,
'echo' => false,
)
);
$result .= '</ul>';
}
$result .= '</div>';
wp_reset_query();
echo $result;
} |
function sp_html_sitemap() {
$category = true; // показывать блок с постами, false - не показывать, true - показывать
$categoryDate = true; // показывать дату написания поста, false - не показывать, true - показывать
$categoryExclude = '352, 7'; // номера категорий через запятую, что надо исключить, в противном случаи оставить переменную пустой (т.е. два опострофа)
$categoryEmpty = false; // показывать пустые категорий, false - не показывать, true - показывать
$page = false; // показывать блок со страницам, false - не показывать, true - показывать
$pageExclude = '1783, 511'; // номера страниц через запятую, что надо исключить, в противном случаи оставить переменную пустой (т.е. два опострофа)
$author = false; // показывать блок с авторами, false - не показывать, true - показывать
$authorExcludeAdmin = false; // исключить из списка авторов пользователя с логином admin, false - не искючать, true - исключить
$result = '<div>';
if ($category) {
$cats = get_categories(array(
'orderby' => 'name',
'hierarchical' => false,
'exclude' => $categoryExclude,
'hide_empty' => $categoryEmpty,
));
$result .= '<h1>Посты</h1><ul>';
foreach ($cats as $category) {
$result .= '<li><h2><a href="'.get_category_link($category->cat_ID).'">'.$category->name.'</a></h2>';
$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>('.get_the_time('d.m.Y').')</span>':'';
$result .= '</li>';
}
}
$result .= '</ul></li>';
}
$result .= '</ul>';
}
if ($page) {
$result .= '<h1>Страницы</h1><ul>';
$result .= wp_list_pages(
array(
'exclude' => $pageExclude,
'title_li' => '',
'echo' => false,
)
);
$result .= '</ul>';
}
if ($author) {
$result .= '<h1>Авторы</h1><ul>';
$result .= wp_list_authors(
array(
'exclude_admin' => $authorExcludeAdmin,
'echo' => false,
)
);
$result .= '</ul>';
}
$result .= '</div>';
wp_reset_query();
echo $result;
}
Код прокомментирован, так что в нем можно разобраться. Дело осталось за малым. В админке WordPress создаем новую страницу и называем ее, например Карта сайта. В разделе: Атрибуты страницы выбираем созданный недавно шаблон sitemap и сохраняем страницу.
Если вы все сделали правильно, то в меню должна появится созданная страница, на которой будут выведены все ссылки на страницы вашего блога, как это сделано у меня, на карте блога. По желанию страницу можно стилизовать при помощи CSS. Надеюсь, что вам было понятно то, что я тут написал про создание HTML карты для WordPress. 🙂 Если возникнут трудности, то пишите об этом в комментариях.
Я обычно с помощью WP Sitemap Page делаю, чтобы с кодом не ковыряться, и стараюсь как-то ещё апгрейдить, что ли, оживить, например пару картинок добавил, все повеселее)