Избавляемся от Advanced Category Excluder и продолжаем зарабатывать в GoGetLinks. XMLSitemap. WordPress или Как показать по умолчанию в WordPress одну категорию а не все сразу ?

12.3.2012 - 1881 просмотр ;)

Я был удивлен когда заметил что мой Sitemap был сломан. Когда же он сломался ? Видимо не так давно, но яндекс уже успел скушать новый поломаный sitemap и стал совсем плохо индексировать мои статьи, находящиеся в отдельной категории, которая не входила в общий RSS.

На новый WordPress я накатил последний XML Sitemap, sitemap.xml появился, но не захотел показывать записи из исключеной категории. Поэтому я начал рыть. Дошло до того что я сидел и сравнивал изменения в sitemap.php и ACE, но поняв, что дело может быть даже в самом WordPress я плюнул на их всех и снова захотел написать свою уже десятую CMS, но все же решил просто ограничиться тем что поправить во что бы то ни стало ошибку.

Самым корявым местом во всей этой системе мне показался сам Advanced Category Excluder. Ибо написан он был давно и не обновлялся, а какие он там использовал механизмы — один бог его знает. Разглядывание его кишков под микроскопом мне ничего не дало. Поэтому я решил тупо отключить Advanced Category Excluder и посмотреть результат.

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

Путь правки на категорию в htaccess — не верный.

Посмотрел, Русском Гугле — ничего не пишут.

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

Ребята писали много, но где-то код был совсем древним, пришлось разглядывать более актуальные хаки. Именно хаки, потому что нормального способа сделать это в Админке — не существует. Вот пост, где я взял готовое решение: http://wordpress.org/support/topic/how-to-make-category-default

Сейчас кратко расскажу чего надо сделать.

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

Код прилагается:

<?php
if (is_home()) {
$mycat = 7; //put your category id in place of the 7
query_posts($query_string . '&cat=' . $mycat);
}
?>
<?php if (have_posts()) : ?>

 

Тут по умолчанию указана категория под ID=7, вы же выберите ее у себя сами, просто наведите в админке на название категории и посмотрите URL, атм в URL будет tag_ID=%, где % — номер категории.

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

В итоге я получил нужную категорию по умолчанию, а исключенная категория теперь вовсе даже не исключенная, а просто не показывается сразу, но ее можно легко посмотреть. Все новые посты будут теперь попадать в XML Sitemap и хорошо кушаться поисковыми системами. Единственная проблема которая появится еще:

Если вы резали на живом, да еще и ваша основная лента прописана в Feedburner, то придется пересоздать ленту, точнее, просто взять ее заново, при этом могут потеряться подписчики, даже не так, подписчики будут получать все посты, а им этого не надо, поэтому надо сходить в FeedBurner и поменять URL для ленты. Делается это легко. FeedBurner маладец. Кстати взять RSS ленту для категории — легко, надо к концу URL, добавить: /feed

Вот таки победил я проблемы с sitemap.

Статьи из раздела, Видеочат рулетка