SEO-оптимизация для WordPress

Раньше я не занимался SEO, обычно этим занимался отдельный специалист. Либо, SEO вообще не требовалось, потому что сайты заказчика продвигались не за счёт выдачи в поисковике, а за счёт контекстной рекламы и сарафанного радио в узком бизнес-сообществе. Но сейчас я решил озаботиться этим вопросам, чтобы отдавать людям SEO-оптимизированные сайты на WordPress из коробки. Попробовал 3 плагина, пришёл к интересным выводам.

  1. Yoast SEO - замедляет сайт. Выкинул его сразу.
  2. Rank Math - маркетинг чистой воды. Во-первых, "рейтинг", который показывается на страницах не имеет никакого отношения к реальной SEO-оптимизации. Это просто способ продать вам премиум-функции, без которых плагин всегда будет показывать низкий рейтинг страницы. Во-вторых, я просто орнул в голосину с фичи, которая в интерфейсе этого плагина подаётся как одна из важнейших - keywords. Meta-тег keywords в современном SEO уже практически не используется. Поисковые системы, включая Google, давно отказались от его учета, так как сайтоделы часто злоупотребляли этим тегом для спама. Но, функция "keywords" в этом плагине используется даже не для мета-тега keywords. Он вставляет ключевые слова в структурированные данные (JSON-LD), которые вообще никак не влияют на ранжирование в поисковиках. Rank Math специально переоценивает важность keywords в JSON-LD, поскольку это выглядит "продающе" для новичков. Но на деле, это лишь малозначительный элемент, который только улучшает визуальное представление сайта в поиске, что может косвенно повысить посещаемость.
  3. Slim SEO - на этом плагине я пока остановился. Он не замедляет сайт, не перегружает интерфейс админки, как Rank Math, а всю оптимизацию делает практически на автомате. При редактировании страницы, нет ничего лишнего - можно заполнить мета-теги title и description, а это главное. Ещё из интересного, в плагине есть механизм редиректов, а также можно закрыть определённые страницы от индексации. Slim SEO не добавляет разметку JSON-LD (по крайней мере, в бесплатной версии). Но, эту штуку можно добавить и без плагина примерно так:
function add_custom_json_ld() {
    if (is_single()) { // Только для записей
        echo '<script type="application/ld+json">';
        echo json_encode([
            "@context" => "https://schema.org",
            "@type" => "Article",
            "headline" => get_the_title(),
            "datePublished" => get_the_date('c'),
            "dateModified" => get_the_modified_date('c'),
            "author" => [
                "@type" => "Person",
                "name" => get_the_author()
            ],
            "publisher" => [
                "@type" => "Organization",
                "name" => get_bloginfo('name')
            ]
        ]);
        echo '</script>';
    }
}
add_action('wp_head', 'add_custom_json_ld');