5 советов по созданию SEO-оптимизированной темы для WordPress

Как сделать SEO-оптимизированную тему для Wordpress

Количество SEO оптимизированных тем для WordPress на сегодняшний день достаточно велико и с помощью Google не составит труда найти массу сайтов, предлагающих готовые темы подобного класса. И, если ваша текущая тема не отвечает стандартам SEO оптимизации, но есть желание получить более высокие позиции в поисковых системах — скорее всего вы захотите ее сменить. Но, если вам нравится существующий дизайн, на самом деле нет серьезной необходимости менять имеющуюся тему на какую-либо другую, только ради значка «SEO Optimized».

Откровенно говоря, оптимизировать тему для WordPress достаточно легко и хотя это потребует некоторых усилий, количество серьезных изменений — несущественно. Есть несколько областей сайта, которые нужно перестроить для того, чтобы Google четко понимал — какие элементы вашего контента наиболее важны. Таким образом, содержание сайта будет надлежащим образом ранжировано в соответствии с релевантными вашему сайту ключевыми словами.

Помимо момента оптимизации блога, написать эту статью меня сподвигла необходимость сократить количество используемых плагинов — в частности, используемых для организации уникальных title и description (см. пп. 4 и 5). Я, как и, думаю, многие пользователи WordPress, донедавна лелеял светлую мечту о том, что разработчики услышат стоны «легиона» блоггеров и с выходом WordPress 2.9 все же внесут соответствующие правки в базис системы, которые позволят снизить недакватную нагрузку. Однако, к сожалению, никаких существенных изменений, кроме дополнительных «плюшек» сомнительной полезности, ничего добавлено/изменено не было.

Итак, вот эти шаги.

1. Убедитесь, что заголовок вашего блога обернут тегами <h1>

Для примера:

1
<h1>Proofsite: ваш cайт должен продавать!</h1>

Для того, чтобы условие заработало, в файл header.php нужно добавить следующую строку:

<h1><a href="<?php echo get_option('home'); ?>/"><?php bloginfo('name'); ?></a></h1>

2. Убедитесь, что заголовки ваших записей и страниц обернуты тегами <h1> или <h2>

Выберите один из вариантов, поскольку каждый тег имеет свой вес. Наилучшим вариантом будет:

  • на страницах, где записи идут в перечне (index.php, archive.php), обернуть заголовки тегом <h2>.
  • на странице обособленной записи или страницы (single.php, page.php) — обернуть заголовок тегом <h1>
  • подзаголовки на страницах обособленной статей (single.php, page.php) — обернуть заголовком <h2>

3. Убедитесь в том, что тег title вашей ссылки на статью содержит название материала

Если это не так, для реализации этого пункта, а заодно и предыдущего — замените в файлах index.php, single.php существующий код на:

1
<H2><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php if ( function_exists('the_title_attribute')) the_title_attribute(); else the_title(); ?>"><?php the_title(); ?></a></H2>

4. Содержание мета-тега title для ваших страниц и записей должно быть уникальными

По-умолчанию, содержимое тега title заполняется комбинацией из названия блога и названия статьи. Однако этот подход ограничивает разработчика тем, что не позволяет при необходимости добавлять в title какой-либо другой текст, например — теги, название рубрики, название серии и т.д.

Для этого замените стандартную строку:

1
<title><?php wp_title('&laquo;', true, 'right'); ?> <?php bloginfo('name'); ?></title>

на вот эту:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<title><?php
if (is_front_page()) {
echo bloginfo('name');
} elseif (is_page()) {
echo wp_title(''); echo " | "; bloginfo('name'); // если необходимо выводить стандартный заголовок блога
} elseif (is_single()) {
echo wp_title(''); echo " | "; echo 'Your Site Name'; // если необходимо выводить любую другую фразу 
} elseif (is_404()) {
echo '404 Not Found'; echo " | "; echo 'Your Site Name';
} elseif (is_category()) {
echo 'Category:'; wp_title(''); echo " | "; echo 'Your Site Name';
} elseif (is_search()) {
echo 'Search Results'; echo " | "; echo 'Your Site Name';
} elseif ( is_day() || is_month() || is_year() ) {
echo 'Archives:'; wp_title(''); echo " | "; echo 'Your Site Name';
} else {
echo wp_title(''); echo " | "; echo 'Your Site Name';
}
?></title>

Как работает код:
В том случае, если требуется вывести стандартное название блога, используйте «bloginfo(‘name’);», если же необходимо указать любой другой текст — «echo ‘Your Site Name’;»

5. Содержание мета-тега description для ваших страниц и записей должно быть уникальными

Добиться этого можно или с помощью специальных плагинов для WordPress, например All in One SEO Pack или Platinum SEO Pack.

Но мы ведь делаем SEO-оптимизированную тему без использования сторонних приложений, верно? А потому используем мощности WordPress и PHP.

Для того, чтобы создать уникальный мета-тег description для страниц и записей, необходимо добавить следующий PHP код в файл header.php после тега title:

1
2
3
4
5
6
<meta name="description" content="<?php if (have_posts() && is_single() OR is_page()):while(have_posts()):the_post();
$out_excerpt = str_replace(array("\r\n", "\r", "\n"), "", get_the_excerpt());
echo apply_filters('the_excerpt_rss', $out_excerpt);
endwhile;
else: ?><?php bloginfo('description') ?>
<?php endif; ?>" />

Как работает код:

  • для главной страницы блога (index.php) и страницы перечня записей (archive.php) будет выводиться описание блога из раздела «Настройки -> Общее»;
  • для страницы записей (single.php) будет выводится «Цитата» статьи — первый абзац.

Однако иногда возникают ситуации, в которых вас может не устроить автоматическая подстановка содержимого description на основе первого абзаца. В этом случае, достаточно просто заполнить поле «Цитата» вручную.

Update:

Совет №6 от Яна Такушевича: «на странице поста (single.php) можно выводить список тегов. В качестве тэгов добавляем ключевые слова и тем самым повышаем их плотность на странице.
Если отображать текстовое облако тэгов (именно текстовое, а не флэш), то можно собрать дополнительные переходы из ПС по соответствующим НЧ (низкочастотным — прим. мое) ключевым словам».

От себя добавлю, что за вывод облака тегов в WordPress отвечает функция

1
<?php wp_tag_cloud( $args ); ?>

Подробнее о ней можно почитать в WordPress Codex.

Если вы знаете еще какие-либо советы — напишите их в комментариях и они обязательно будут добавлены в эту запись с указанием автора и ссылки на сайт.

В статье использованы материалы блогов SEO Blog And Technology и Agent SEO

37 комментариев к “5 советов по созданию SEO-оптимизированной темы для WordPress”

  1. Лично я для каждого поста пишу свой title с помощью те же плагинов как all in one seo pack или platinum seo.
    Если касается темы, то помню там постоянно приходится удалять их ссылок title=»permalink to …»

    ОтветитьОтветить
  2. Tod, в том случае, если есть необходимость (или желание) для каждого поста вручную прописывать title, то этот вариант легко можно реализовать с помощью произвольных полей. Я для себя серьезной необходимости в этом не вижу, поскольку так или иначе, но заголовок поста в любом случае должен присутствовать в заголовке страницы — это логично.
    Как я посмотрел, Вы со своей стороны дописываете некоторые отдельные фразы, поделитесь — с какой целью? Я имею ввиду — почему Вы их добавляете только в title, но не в заголовок самой записи?

    На мой взгляд, для создания title и description вручную нет смысла использовать плагины, учитывая прожорливость (в плане памяти) последних версий WordPress.

    Насколько помню, в 3-х файлах нужно убрать (для тем стандартной комплектации) в одном-двух местах — в index.php, single.php и archives.php. Собственно, эта строка ничем не мешает — как минимум, я никогда разницы (есть — нет) не ощущал.

    ОтветитьОтветить
  3. Я вообще не использую никакие SEO — плагины и делаю тему с нуля.

    ОтветитьОтветить
  4. @Regent: я, собственно, после применения для блога всех вышеописанных пунктов и скриптов, тоже отключил все плагины, отвечающие за SEO — в их использовании просто отпал смысл.

    В сущности, для того, я и написал этот пост — как шпаргалку для самого себя, которой стоит поделиться с другими :)

    ОтветитьОтветить
  5. @Regent: да вот для этого же блог (или дневник) и завел, ибо садиться и писать исключительно для себя самого если уж не статьи, то хотя бы наброски ключевых моментов — времени не хватает, да и никак не удавалось организовать себя на такой «ратный подвиг» :)
    А так — вроде бы уже и не для себя пишу, а польза (надеюсь, конечно) всесторонняя :)

    ОтветитьОтветить
  6. Отличная статья. Могу дополнить её немного.
    На странице поста (single.php) можно выводить список тегов. В качестве тэгов добавляем ключевые слова и тем самым повышаем их плотность на странице. Вот в вашем случае вместо «разработчику» можно было добавить тэг «оптимизация wordpress» или что-нибудь в этом духе.

    Если отображать текстовое облако тэгов (именно текстовое, а не флэш), то можно собрать дополнительные переходы из ПС по соответствующим НЧ ключевым словам.

    P.S. Заметил досадный глюк. В поле ввода текста комментария не работают стрелки на клавиатуре.

    ОтветитьОтветить
  7. @Ян: спасибо за совет — добавил его со ссылкой на Ваш блог в текст статьи.
    У меня теги выполняют функцию категоризации — каждая статья адресована одной или нескольким группам участников процесса разработки сайта. Так изначально спланировано для большего удобства читателя — в зависимости от того, к какой группе он принадлежит.
    Но иллюстративный пример — совершенно верный.

    P.S. Спасибо, к сожалению, мне пока что не удалось побороть это неудобство — все еще ищу в чем причина.

    ОтветитьОтветить
  8. Спасибо за ссылку. Категоризация с помощью тэгов у Вас организована очень удобно, я уже заметил. Еще очень понравилось оформление уведомлений о новых комментариях. Какой плагин для этого используете?
    P.S. По поводу глюка можете попробовать отключить плагин предпросмотра. Если причина в нём — задайте вопрос у его автора вот здесь: http://dimox.name/jquery-comment-preview-wordpress-plugin/
    Он всегда старается помочь.

    ОтветитьОтветить
  9. @Ян: спасибо, для уведомления о комментариях используется Сomment Notifier. Именно он понравился возможностью полной настройки текста отправляемого сообщения.

    P.S. Пробовал, но как показала практика — дело не в нем. Я уже все возможные плагины отключал — пока без результата. Возможно, дело в JS скриптах темы, как раз смотрю их.

    ОтветитьОтветить
  10. Очень полезные советы. Из всех плагинов рекомендую Platinum SEO. По сравнению с All in one SEO там больше функционала.

    ОтветитьОтветить
  11. @Avtotreid: к сожалению, базовая поставка WordPress не обладает достаточным функционалом, а потому приходится использовать плагины.

    ОтветитьОтветить
  12. Отличные советы… а еще в темки нужно чистить от лишних ссылок которые любят пихать туда авторы сайтов с темами… тногда даже шифруя футеры.

    ОтветитьОтветить
  13. Еще хорошо составлять не только уникальный description, но еще и привлекательный. Описание часто появляется в гугле в результатах выдачи :).

    ОтветитьОтветить
  14. @ © Yaroslav.Ch:
    Очень даже в тему, я сам юзаю «all in one seo pack» в принципе меня всё устраивает, но если брать ваши заметки себе в арсенал (а так я и сделаю )) ), то это на порядок упрощает процесс публикации. Я не берусь спорить так как в СЕО я не гуру, но предложенный вами вариант вполне адекватен, в дальнейшем при разработки темы, я буду их использовать.

    Так что спасибо )

    ОтветитьОтветить
  15. @ Вячеслав: спасибо за комментарий.

    All In One Seo Pack решает только часть задач. Например, за пп. 1 и 2 он вообще не отвечает.

    ОтветитьОтветить
  16. Спасибо за статью, уже кое-что подправила. Вообще мне нравиться, когда все по пунктам разложено, толково.

    ОтветитьОтветить
  17. У меня замечание (или дополнение) по поводу 1 пункта — заголовок блога оборачиваем в h1 только на главной, на страницах постов в h2, или вообще в span.

    ОтветитьОтветить
  18. Вроде ни чего сложного, стоит будет опробовать на будущем блоге. Но уже на вордпресс, а не на Блогспот.

    ОтветитьОтветить
  19. Хорошая статья! все таки лучше всегда вручную все делать а не пользоваться плагинами непонятными!

    ОтветитьОтветить
  20. Вот меня всегда интересовал следующий вопрос: в плагине All in one Seo Pack есть значения «использовать noindex для рубрик и тегов». Галочку необходимо ставить или нет? Просто если не поставишь галочки, получается что в индекс будут загружены лишние УРЛы. И получается как бы дублированный контент получается. Или я не прав? Просто всегда думаю ставить галочки или нет. Я всегда ставлю. Посоветуйте что-нибудь?

    ОтветитьОтветить
  21. @Олег Астанин: в принципе, включение этих флагов считается правильным — они действительно должны помогать избежать дублированного контента. Кроме того, все зависит от того — какого размера у Вас материалы. Точнее говоря, если Вы не используете разделение с помощью more, то тогда включать надо обязательно. Если используете — уже по желанию.

    ОтветитьОтветить
  22. Очень познавательная статья.Спасибо Вам.Сколько всего надо знать!!!

    ОтветитьОтветить
  23. Это основная беда WordPress — почему-то очень немногие создатели шаблонов задумываются о сео оптимизации

    ОтветитьОтветить
  24. Стараюсь подбирать уже оптимизированные премиум шаблоны (да и нравятся они мне с точки зрения внешней простоты и эстетики, хотя верстальщики и говорят, что в них много лишних кодов), сама пока так откровенно в код вторгаться побаиваюсь, но это дело времени, есть у меня и шаблоны, которые не лишне подправить. Спасибо за разъяснения.

    ОтветитьОтветить
  25. Спасибо за дельные советы! При создании собственной темы обязательно учту это!

    ОтветитьОтветить
  26. Я собственно как и «Regent» считаю, что любую cms’ину нужно писать самому или же после установки стандартного шаблона переделать в ней не только указанные 5 пунктов, но и полностью переписать хтмл структуру, убивать ненужный цсс и убрать лишние строки в самом движке. Особенно ссылки на авторов и прочее… Когда начинаешь копаться, то сталкиваешься с большим количеством ненужного кода )) Я у себя пошел по второму пути. Но на момент постижения этой мысли я уже умел блог, так что с нуля писать нету смысла)

    ОтветитьОтветить
  27. Platinum SEO самое известное и качественный модуль, пользуюсь лично сам. выше перечисленные советы очень важные для WordPress, неозодимо их соблюдать

    ОтветитьОтветить
  28. @wordpress: к сожалению — да. Посмотрите на объем используемой памяти — до установки любого плагина и после.

    ОтветитьОтветить
  29. У меня вопрос по тегу h1… Вы в статье написали обернуть название сайта в этот тег, это ж получается на странице статьи single.php будет два тега h1:
    1. В шапке сайта (причем абсолютно без ключа данной статьи)
    2. В названии самой статьи
    Насколько я знаю 2 тега h1 не есть хорошо, или я что то не так понял?
    Буду признателен если объясните.

    ОтветитьОтветить
  30. @Андрей: спасибо за хороший вопрос. Из своей практики могу сказать, что Google или Яндекс умеют корректно отделять название блога от заголовка статьи. Сам момент с «на странице не должны присутствовать два тега h1» абсолютно верный, но речь обычно идет о рамках одной статьи.
    Посмотрите на блог Михаила Шакина — признанного SEO-эксперта. Заголовок «Shaki.ru» (название блога) у него на любой странице обернут h1, а слоган «Продвижение сайтов, веб-дизайн и креатив» — обернут h2. При этом все заголовки статей на single.php обернуты тем же h1.
    Кстати, к моему стыду, я только сейчас обнаружил, что у меня самого это не сделано. «Сапожник без сапог», честное слово :) Видимо, когда недавно правил тему, изменил и не вернул теги — уже сделал себе отметку исправить.
    Спасибо!

    ОтветитьОтветить
  31. All in One SEO Pack или Platinum SEO Pack как говорится дело привычки. И тот и другой модуль хорошо справляется с задачей, но мне больше нравится All in One! Чего и всем советую.

    ОтветитьОтветить
  32. Раньше All in One SEO Pack был нормальным. А теперь его раздули непонятно зачем. Премиум какой то. Но без него «и не туды и не сюды».

    ОтветитьОтветить
  33. All in One SEO Pack или Yoast SEO до сих пор актуальны, правда количество настроек немножко увеличилось.)

    ОтветитьОтветить

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *