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

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

Карта сайта по сути должна представлять из себя просто напросто перечень ссылок на все статьи. В общем-то, не обязательно, чтобы анкорами ссылок были названия статьей – важны сами ссылки как факт.

Перейдем к практике.

Все статьи WordPress’а находятся в таблице wp_posts. То есть – нужно просто выдрать данные оттуда.

Это сделать довольно просто и понятно, но есть одна заминка. У меня не вышло использовать одну и ту же карту сайта для разных блогов на WP – в первом случае URL’ом статьи был ее ID, подставленный в somesite.ru/?p=ID, а во втором ID не играл никакой роли и URL хранился самостоятельно в отдельном поле таблицы (guid).

Ну и еще одна тонкость – нужно выдавать ссылки только на те статьи, которые уже опубликованы и те, которые являются статьями. Последнее, возможно, звучит странно :) Объяснение – WP зачем-то хранит в wp_posts еще и «аттачи» (приложенные файлы) к статьям и еще всякую дребедень.

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

mysql_connect («хост», «логин», «пароль»);
mysql_select_db («имя базы данных»);

$q = mysql_query («SELECT * FROM wp_posts WHERE post_type=’post’ AND post_status=’publish’;»);
while ($str = mysql_fetch_array ($q)){
echo «<a href=\»».$str[‘guid’].»\»>».$str[‘post_title’].»</a><br>»;
}

Как видно из кода: запрос делается в wp_posts, выбираются только те записи, которые являются статьями (post_type=’post’) и (AND) уже опубликованы (post_status=’publish’). Дальше тупо выводятся ссылки. Тут тоже замечу – возможно, строить URL Вам придется иным способом (здесь же URL хранится в поле guid и я его просто вывожу).

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here