Архив метки: Wordpress



WordPress: Исключить облако тэгов из Поиска

У меня в блоге есть виджет «Облако тэгов» (Tag Cloud). Мне это удобно, если нужно найти не какое-то конкретное «точное» слово/фразу, а что-то вроде тематики заметки — так зачастую бывает быстрее. Просматривая статистку в Яндекс-Метрике, я обратил внимание, что некоторые из читателей заходят на мой сайт, но только потом пытаются что-то найти через поиск. Встроенный в WordPress поиск может найти только точную фразу. Если вы ошиблись хотя бы буквой, вы ничего не найдёте. Это знают не все, поэтому я решил добавить на сайт виджет для Поиска от Яндекс. Вроде всё работает, но я обратил внимание, что в этом случае поиск выдаёт результаты слишком избыточные. Например туда попадают слова из Облака тэгов. Чаще всего они и попадают, поэтому поиск практически неэффективен в этом случае.

Попробую добавить к ссылкам из Облака тэгов атрибут nofollow. Поскольку все эти ссылки динамические, то руками их не добавишь, поэтому воспользуюсь сниппетом (или можно код добавить в functions.php):

function add_nofollow_tag($sLink)
{
  return str_replace('<a href=', '<a rel="nofollow" href=', $sLink);
}

add_filter('wp_tag_cloud', 'add_nofollow_tag');

Пол дела сделано, но Яндекс ищет по словам, а значит он парсит область с виджетом. Тут придётся исправлять файл sidebar.php для вашей темы (у меня TwentyTwelve):

/dentnt.trmw.ru/docs/wp-content/themes/twentytwelve/sidebar.php
<?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?>
	<div id="secondary" class="widget-area" role="complementary">
		<?php dynamic_sidebar( 'sidebar-1' ); ?>
	</div><!-- #secondary -->
<?php endif; ?>

В новых версиях WordPress виджеты добавляются динамически из очереди, так что можно ловить их по индексу, либо править сам файл tag-cloud.php, но в нём очень много кода. Мне проще скрыть от Яндекса всю боковую панель с помощью элемента noindex:

<?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?>
	<div id="secondary" class="widget-area" role="complementary">
                <!--noindex-->
		<?php dynamic_sidebar( 'sidebar-1' ); ?>
                <!--/noindex-->
	</div><!-- #secondary -->
<?php endif; ?>
Причём в данном случае мы боремся именно с Яндексом, т.к. при добавлении сайта в Google, я мог выбирать, какие участки страницы необходимо индексировать.