Продолжаю вещать про создание контентных проектов, после выбора шаблона, пора бы провести seo оптимизацию wordpress. Еще в далеком 2010 году, каждый уважающий себя вебмастер обязан был написать статью про seo оптимизацию wordpress, я еще такую не писал 🙂 Тогда многое что приходилось делать руками или использовать 100 плагинов. Сейчас, практически вся оптимизация держится на нескольких плагинах и немного ручного труда.
Главное зеркало
Настройки > Общие
Для поисковых систем сайт с www. и без - это два разных сайта. В wordpress уже автоматически стоит редирект на адрес который вы укажите. Я использую сайты без www, так короче и современнее. На всякий случай проверьте происходит ли редирект на нужный адрес.
ЧПУ
Ставим плагин Cyr to Lat и получаем красивые URL адреса.
Прописываем в Настройки > Постоянные ссылки
Посты я привязываю именно к категориям, чтобы был уровень вложенности. Во-первых поисковику удобнее понять структуру вашего сайта. Во-вторых при решении проблем с индексацией большого сайта, легче понять в какой категории и вообще с чем связаны проблемы.
Мета данные, Sitemap, Хлебные крошки
Для всего этого использую один плагин Yoast SEO. Плагин только на половину переведен на русский, но в нем итак все понятно.
Не забываем включить расширенны настройки:
Из главных настроек, что хотелось бы отметить.
Отключаем страницы с датами и авторами архивов, эти страницы вообще не нужны, если у вас конечно не какой то специальный проект, где они действительно будут полезны. Так же можете отключить метки если в структуре сайта не будете их использовать. Обычно в окончательной структуре семантике сразу видно, стоит ли использовать метки или нет.
На странице дополнительно отрубаем всё - чтобы в урлах не отображались /category/, ?replytocom, всякие редиректы без нашего ведома.
Удаляем всякие переменные из типов записи. Оставляем, чтобы показывался только title.
А в рубриках не забываем оставить Page. И в метках тоже, если используете их в своей структуре сайта. Page - будет отображать номер страницы в title.
У этого плагина есть возможность настройки Хлебных крошек, если у вас большая структура сайта и они требуются. Так же можно настроить карту сайта xml, с этим проблем не должно быть.
Заголовки h1, h2, h3...
Здесь придется залезть в код. Убираем все заголовки h из бокового меню, футера. Эти теги должны использоваться только в контентном блоке.
Заголовок h1 - должен использоваться 1 раз на странице в виде главного заголовка статьи. Остальные заголовки h2, h3 и т.д. могут использоваться несколько раз в логической своей последовательности. Размеры у этих заголовков так же должны соответствовать логике - h1 больше всех, h2 поменьше, h3 еще меньше и т.д.
На главной странице частенько невозможно употребить заголовок h1. Делать описание сайта на главной и иметь логотип в виде текста, не всегда применимо. Поэтому на главной странице можно забить на h1, и для вывода статей использовать h2.
В самой же статье, когда мы переходим на неё, то в качестве главного заголовка используем 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: imajor.ru Sitemap: https://imajor.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 из админ бара
- Убирает виджет "Страницы"
- Убирает виджет "Календарь"
- Убирает виджет "Облако меток"
- Отключает ревизии полностью или определенное количество
Выглядит все вот так:
Подробнее о каждой функции можно прочитать на сайте плагина и там же купить его.
После всей этой оптимизации добавляем сайты в панель вебмастера Яндекса и Google, указываем карты сайта xml.
Вроде бы ничего не забыл.
html карта сайта - dagon sitemap
Циклические ссылки - Remove Redundant Links
Проверить валидность, мобильную версию.
Broken Link Checker - ищем битые видосы и ссылки
Original texts yandex webmasters - тексты в панельку на автомате)
Html карта для нового проекта не нужна, да и вообще если все норм с индексацией то не нужна она.
А вот Remove Redundant Links нужный плагин 🙂 Спасибо.
Евгений, респект. Поставил, попробовал. То что надо этот Original texts yandex webmasters.
Спасибо!! Просто 10/10 и в закладки
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/", поэтому файлы и не открылись этой директивой
Че за шлак тут на этой странице? Пиздец блогир хуев. Ахуенная статья.
неопределенность она такая
Вовремя мне товарищ скинул на вас ссылку.
Как раз сейчас благодаря этому посту внёс все изменения на двух сайтах.
Как оказалось всё кстати.
После того как отключил - Strip the category base (usually /category/) from the category URL
У меня перестали посты открываться. Пришлось больше времени потратить на восстановление.
На старых и работающих сайтах, с осторожностью все бы делал. Плагины другие могут конфликтовать или версия wp старая, много причин может быть.
Конечно у вас урлы перестали открываться, вы убрали часть урла! Нельзя менять структуру URL, когда уже всё проиндексировалось!
А вроде бы Yoast сам редирект 301 прописывает со старых на новые урлы, или это плагин по Перенаправлениям делает. Я просто как то менял урлы у меня автоматом редиректы прописались.
Хочу свои 5 копеек внести:
Рекомендую лучше для транслита использовать плагин Cyr to Lat enhanced ,а не тот что указан в статье. На Cyr to Lat обжигался, он не всегда правильную транслитизацию делает и Яндекс, например, не подсвечивает слова некоторые, которые переведены этим плагином.
И ещё момент, убирай последнюю крошку, которая дублирует Н1.
Ок, спасибо за советы, учту
Ещё один хороший плагин RusToLat - в нём есть настройка смены стандарта перевода по ГОСТу 🙂
блин, как же у меня бомбит каждый раз, когда я вижу вот такие примеры роботса. все стараются найти какие-то универсальные решения совершенно не думаю и не понимая что такое роботс и как он работает.... вместо 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:… Подробнее »
поставь подписку на комментарии, чтобы уведомления приходили, когда отвечают на комментарий
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- прописать что отдельно, только с нюансом, о котором написал выше.
А что делать с внешними ссылками, редирект или ноидекс, как вообще лучше?
Смотря, что за ссылки имеете ввиду. Если например ссылки полезные в статьях, то я бы ничего с ними не делал. Если это ссылки в каталоге предприятий или подобное и их много, то закрывал бы под seohide.
не могу никак добавить %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/
Может стоит плагин кэширования и следует удалить кэш.
Купил плагин. Ну, в общем-то не плох, тем более что по скидке и анлим лицензия. Но что я определил - плагин не удаляет ревизии у уже существующих записей, только ограничивает это количество у новых.
Зачем echo get_the_title(); если есть the_title(); ?
И зачем в category_descripttion(); передавать айди, если мы и так на странице категории находимся и все автоматически работает?
По роботсу вопросов тьма, выше делали дельные замечания.
А так, в целом, правильно все
Все зависит от шаблона, где то прописано get_the_title(); где то the_title(); ? какая разница, сути это не меняет, что заголовок должен быть в h1.
Насчет robots.txt у меня прекрасно работает такой роботс, никогда не было проблем с индексацией или что то лишнее залетало в индекс - значит логично, что он рабочий. Я чисто исхожу из своего опыта, что у меня работает, а какие то там правила и так далее меня не сильно волнуют, robots прекрасно работает и с * и с /.
Не особо вижу смысла заморачиваться с правилами, если итак все работает.
Вот реальный твой роботс. Зачем прописывать в статье другой?
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 тоже помудрел.
роботс можно уменьшить, взглянуть на него и видно сразу по сути дубли строк, зачем?)