SEO оптимизация WordPress нового поколения

Продолжаю вещать про создание контентных проектов, после выбора шаблона, пора бы провести seo оптимизацию wordpress. Еще в далеком 2010 году, каждый уважающий себя вебмастер обязан был написать статью про seo оптимизацию wordpress, я еще такую не писал 🙂 Тогда многое что приходилось делать руками или использовать 100 плагинов. Сейчас, практически вся оптимизация держится на нескольких плагинах и немного ручного труда.

Главное зеркало

Настройки > Общие

Главное зеркало wordpress

Для поисковых систем сайт с www. и без - это два разных сайта. В wordpress уже автоматически стоит редирект на адрес который вы укажите. Я использую сайты без www, так короче и современнее. На всякий случай проверьте происходит ли редирект на нужный адрес.

ЧПУ

Ставим плагин Cyr to Lat и получаем красивые URL адреса.

Прописываем в Настройки > Постоянные ссылки

ЧПУ WordPress

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

Мета данные, Sitemap, Хлебные крошки

Для всего этого использую один плагин Yoast SEO. Плагин только на половину переведен на русский, но в нем итак все понятно.

Не забываем включить расширенны настройки:

Yoast Seo wordpress расширенные настройки

Из главных настроек, что хотелось бы отметить.

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

Отключение авторов и даты в Yoast Seo WordPress

На странице дополнительно отрубаем всё - чтобы в урлах не отображались /category/, ?replytocom, всякие редиректы без нашего ведома.

Yoast Seo wordpress дополнительно

Удаляем всякие переменные из типов записи. Оставляем, чтобы показывался только title.

Seo yoast мета данные

А в рубриках не забываем оставить Page. И в метках тоже, если используете их в своей структуре сайта. Page - будет отображать номер страницы в title.

Yoast seo wordpress номер страницы в title

У этого плагина есть возможность настройки Хлебных крошек, если у вас большая структура сайта и они требуются. Так же можно настроить карту сайта xml, с этим проблем не должно быть.

Заголовки h1, h2, h3...

Здесь придется залезть в код. Убираем все заголовки h из бокового меню, футера. Эти теги должны использоваться только в контентном блоке.

Заголовок h1 - должен использоваться 1 раз на странице в виде главного заголовка статьи. Остальные заголовки h2, h3 и т.д. могут использоваться несколько раз в логической своей последовательности. Размеры у этих заголовков так же должны соответствовать логике - h1 больше всех, h2 поменьше, h3 еще меньше и т.д.

На главной странице частенько невозможно употребить заголовок h1. Делать описание сайта на главной и иметь логотип в виде текста, не всегда применимо. Поэтому на главной странице можно забить на h1, и для вывода статей использовать h2.

h2 на главной

В самой же статье, когда мы переходим на неё, то в качестве главного заголовка используем h1.

h1 в статье

В коде wordpress это правится в файле single.php, но все зависит от шаблона.

<h1><?php echo get_the_title(); ?></h1>

Описание рубрик

Если вы сделали грамотную структуру сайта, и выбрали рубрики, а не страницы. То рубрики вы тоже будете продвигать. Поэтому для них необходим текст. Некоторые шаблоны и темы по стандарту используют эту возможность. В некоторые придется вставить код:

<?php echo category_description( $category_id ); ?>

И не забываем главный заголовок так же сделать в h1.

Все это правится обычно в файлах category.php или archive.php

Пример на блоге в рубрике Инструменты, у вас конечно же будет текста больше 🙂

Описание рубрик

Robots.txt

Чтобы всякий шлак не лез в индекс, я закрываю все что можно, на всякий случай. Лучше подстраховаться, потому что если мусорная страница попала в индекс поисковой системы, то она долго удаляется из него, а это напрягает морально 🙂

Использую вот такой robots.txt

User-agent: *
Disallow: /cgi-bin
Disallow: /wp-json/
Disallow: /wp-content/
Disallow: /wp-includes/
Disallow: /wp-admin/
Disallow: /xmlrpc.php
Disallow: /wp-login.php
Disallow: /wp-register.php
Disallow: /page/
Disallow: */page
Disallow: /?feed=
Disallow: */comments
Disallow: */comment-page*
Disallow: /comments/feed/
Disallow: /*trackback
Disallow: */trackback
Disallow: /*feed
Disallow: */feed
Disallow: /feed
Disallow: */&
Disallow: /&
Disallow: /?
Disallow: /*?*
Allow: /wp-content/uploads/
Allow: *.css
Allow: *.js
Host: internetmajor.ru

Sitemap: https://internetmajor.ru/post-sitemap.xml

Редиректы и битые ссылки

Иногда приходится делать правильные редиректы, если накосячил с ссылками, использую этот плагин. К тому же он чекает страницы с 404 ошибкой, на которые попадают люди или роботы.

Так же использую Broken Link Cheker - он уже сканит полностью весь сайт на битые ссылки, а не только на посещенные.

Кеш

По поводу кеша я уже писал статейку, использую Wp-Cache.com, он простой без всяких настроек и при этом норм справляется со своей функцией.

Остальная оптимизация лишнего

Даже после всей базовой оптимизации wordpress, все равно остается предостаточно ненужных кодов, дублей, ссылок. И чтобы до конца идеализировать wordpress я использую плагин Clearfy, он платный, но есть неограниченная лицензия и мне кажется он того стоит.

В плагине все просто, проставляете галочки и сохраняете, каждая функция подробно описана на сайте плагина, а так же при его настройке.

Плагин умеет следующее:
[checklist]

  • Отключает JSON REST API
  • Отключает Emoji
  • Удаляет код meta generator
  • Удаляет код dns-prefetch
  • Удалить RSD ссылку
  • Удаляет WLW Manifest ссылку
  • Удаляет короткую ссылку /?p=
  • Удаляет из кода ссылки на предыдущую, следующую запись
  • Удаляет стили .recentcomments
  • Автоматически проставляет заголовок Last Modified
  • Отдает ответ If-Modified-Since
  • Автоматически проставляет аттрибут alt
  • Прячет внешние ссылки в комментариях в JS
  • Прячет внешние ссылки авторов комментариев в JS
  • Создает правильный robots.txt
  • Редирект с https на http
  • Убирает дублирование названия в хлебных крошках WP SEO by Yoast
  • Удаляет архивы дат
  • Удаляет архивы пользователей
  • Удаляет архивы тегов
  • Удаляет страницы вложений
  • Удаляет дубли пагинации постов
  • Убирает возможность узнать логин администратора
  • Прячет ошибки при входе на сайт
  • Убирает ссылку на X-Pingback и возможность спамить pingback'ами
  • Отключает ленту RSS
  • Убирает в форме комментирования поле «Сайт»
  • Убирает ссылки на сайт wordpress.org из админ бара
  • Убирает виджет "Страницы"
  • Убирает виджет "Календарь"
  • Убирает виджет "Облако меток"
  • Отключает ревизии полностью или определенное количество

[/checklist]

Выглядит все вот так:

Clearfy чистка кода

Подробнее о каждой функции можно прочитать на сайте плагина и там же купить его.

После всей этой оптимизации добавляем сайты в панель вебмастера Яндекса и Google, указываем карты сайта xml.

Вроде бы ничего не забыл.

Интернет Мажор
Автор этого блога. Зарабатываю на сайтах с 2009 года и тебе советую.

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

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Извините, для комментирования необходимо войти.

Вот реальный твой роботс. Зачем прописывать в статье другой?

User-agent: *
Disallow: /wp-admin/
Disallow: /wp-json/
Disallow: /wp-includes/
Disallow: /feed
Disallow: */page
Disallow: /page/*
Disallow: /search/
Disallow: /&
Disallow: /*?*
Disallow: /?
Host: https://internetmajor.ru

Sitemap: https://internetmajor.ru/post-sitemap.xml

Автор
Интернет Мажор

Времена изменились, стал мудрее и robots.txt тоже помудрел.

Зачем echo get_the_title(); если есть the_title(); ?

И зачем в category_descripttion(); передавать айди, если мы и так на странице категории находимся и все автоматически работает?

По роботсу вопросов тьма, выше делали дельные замечания.

А так, в целом, правильно все

Автор
Интернет Мажор

Все зависит от шаблона, где то прописано get_the_title(); где то the_title(); ? какая разница, сути это не меняет, что заголовок должен быть в h1.

Насчет robots.txt у меня прекрасно работает такой роботс, никогда не было проблем с индексацией или что то лишнее залетало в индекс - значит логично, что он рабочий. Я чисто исхожу из своего опыта, что у меня работает, а какие то там правила и так далее меня не сильно волнуют, robots прекрасно работает и с * и с /.
Не особо вижу смысла заморачиваться с правилами, если итак все работает.

Купил плагин. Ну, в общем-то не плох, тем более что по скидке и анлим лицензия. Но что я определил - плагин не удаляет ревизии у уже существующих записей, только ограничивает это количество у новых.

не могу никак добавить %Page% к страницам пагинации, в настройках стоит а в title не выводится, подскажи что может быть?

Автор

Надо вот так прописывать %%page%%

у меня так и прописано %%term_title%% %%page%% , может быть проблема в шаблоне ? в форме вывода title

Может стоит плагин кэширования и следует удалить кэш.

Автор
Интернет Мажор

Может быть и проблема в шаблоне в header.php надо попробовать прописать title по другому, вот здесь вот написано https://kb.yoast.com/kb/the-seo-title-output-for-the-plugin-doesnt-work-as-expected/

А что делать с внешними ссылками, редирект или ноидекс, как вообще лучше?

Автор
Интернет Мажор

Смотря, что за ссылки имеете ввиду. Если например ссылки полезные в статьях, то я бы ничего с ними не делал. Если это ссылки в каталоге предприятий или подобное и их много, то закрывал бы под seohide.

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

вместо
Disallow: /wp-json/
Disallow: /wp-content/
Disallow: /wp-includes/
Disallow: /wp-admin/
Disallow: /xmlrpc.php
Disallow: /wp-login.php
Disallow: /wp-register.php
можно просто написать
Disallow: /wp-
всего 1 директива, а суть получается такая же

эти правила вовсе не будут работать, нужно указывать начальный /
Allow: *.css
Allow: *.js

и эти директивы тоже не будут работать
Disallow: */page
Disallow: */comments
Disallow: */trackback
да и не нужны они, коль есть уже такого типа
Disallow: /*trackback

так что перед тем как составлять роботс почитайте мануалы и включите голову...

насчет плагинов...
Cyr to Lat - нужный плагин, я использую другой, но суть там та же
Wp-Cache - кэширование для WP просто необходимо, можно использовать любой другой, они почти все работают по одному принципу
Broken Link Cheker - полезный плагин
Clearfy - тоже полезный, я использую самописный
Yoast SEO - тяжелый с кучей лишних функций. для управления мета использую произвольные поля, все остальное решается самописным плагином

Автор
Интернет Мажор

Disallow: /wp-
Это понятно что так можно прописать, я бы так не стал делать, потому что может быть папка или страница wp-pdf и так далее, где будут храниться нужные файлы и инфа для индексации. По мне так лучше прописывать отдельно, отсекая ненужные папки и файлы, на нагрузку или на ресурсы поисковой системы это никак не сказывается.

Специально в статье было написано, что дублирую дерективы, потому что часто поисковик вообще игнорирует эти правила, так сказать подстраховка. Но вот насколько помню лет 5 назад, дерективы */page и allow в таком виде работали.

Про robots.txt, уже лет 5 наверное не читал и не изучал эту тему, согласен, спасибо за советы, проверю 🙂

>> дерективы */page и allow в таком виде работали.

На самом деле Disallow: */comments и подобные директивы будут работать (если только в Mail.ru проблемы могут быть), но они синтаксически неверные - обязательно нужно указывать правила относительно корня сайта:
Disallow: /*comments

>> потому что может быть папка или страница wp-pdf и так далее

Пфф.. Так можно тогда сказать про все остальные директивы: может быть страница
/comments-reply-kak-udalit/
/pager-na-stranice-paginacii/
/feedly-luchshiy-rider-rss/
/trackback-mehanizm-uvedomleniya-saita/

...и все эти страницы будут запрещены текущими правилами robots.txt. А "левых" папок в корне сайта с названием "wp-*" быть не может, если только вручную туда не добавить.

Автор
Интернет Мажор

Встречал плагины категорий которые имели такую вложенность /wp-catalog/, так же давненько создавал сайт по pdf инструкциям там так же в плагине для pdf доков имел вид wp-pdf, и это никак нельзя было изменить сторонними средствами в настройках плагина. Поэтому кто не помнит свой robots или не понимает как он работает, может закрыть эти страницы от индексации. Да и не вижу смысла спорить об этом, разницы нет, что /wp- прописать что отдельно, только с нюансом, о котором написал выше.

поставь подписку на комментарии, чтобы уведомления приходили, когда отвечают на комментарий

Хочу свои 5 копеек внести:
Рекомендую лучше для транслита использовать плагин Cyr to Lat enhanced ,а не тот что указан в статье. На Cyr to Lat обжигался, он не всегда правильную транслитизацию делает и Яндекс, например, не подсвечивает слова некоторые, которые переведены этим плагином.
И ещё момент, убирай последнюю крошку, которая дублирует Н1.

Автор
Интернет Мажор

Ок, спасибо за советы, учту

Ещё один хороший плагин RusToLat - в нём есть настройка смены стандарта перевода по ГОСТу 🙂

После того как отключил - Strip the category base (usually /category/) from the category URL
У меня перестали посты открываться. Пришлось больше времени потратить на восстановление.

Конечно у вас урлы перестали открываться, вы убрали часть урла! Нельзя менять структуру URL, когда уже всё проиндексировалось!

Автор

А вроде бы Yoast сам редирект 301 прописывает со старых на новые урлы, или это плагин по Перенаправлениям делает. Я просто как то менял урлы у меня автоматом редиректы прописались.

Автор
Интернет Мажор

На старых и работающих сайтах, с осторожностью все бы делал. Плагины другие могут конфликтовать или версия wp старая, много причин может быть.

Вовремя мне товарищ скинул на вас ссылку.
Как раз сейчас благодаря этому посту внёс все изменения на двух сайтах.
Как оказалось всё кстати.

Че за шлак тут на этой странице? Пиздец блогир хуев. Ахуенная статья.

Автор
Интернет Мажор

неопределенность она такая

Allow: *.css
Allow: *.js

На самом деле это не открывает все файлы js и css, можешь посмотреть свой сайт тут https://search.google.com/search-console/mobile-friendly
Покажет что сайт не оптимизирован для мобил.

Автор
Интернет Мажор

Точняк, но может это косяк самого инструмента проверки, а роботы следуют этому правилу.

Нет, Кама говорил об этом здесь: https://wp-kama.ru/id_803/pishem-pravilnyiy-robotstxt-dlya-wordpress.html#variant-1-optimalnyj-kod-robots.txt-dlya-wordpress

Роботы обрабатывают сначала короткие (по символам) правила, потом длинные, "Allow: *.js" короче, чем "Disallow: /wp-content/", поэтому файлы и не открылись этой директивой

Спасибо!! Просто 10/10 и в закладки

Евгений

html карта сайта - dagon sitemap
Циклические ссылки - Remove Redundant Links
Проверить валидность, мобильную версию.
Broken Link Checker - ищем битые видосы и ссылки
Original texts yandex webmasters - тексты в панельку на автомате)

Евгений, респект. Поставил, попробовал. То что надо этот Original texts yandex webmasters.

Автор
Интернет Мажор

Html карта для нового проекта не нужна, да и вообще если все норм с индексацией то не нужна она.
А вот Remove Redundant Links нужный плагин 🙂 Спасибо.