Перейти к содержимому
WordPress

WordPress

Кратко о движке

Семействоwordpress
Назначениеcms
ЛицензияGPL-2.0-or-later
Ценабесплатно
Сайтhttps://wordpress.org
Статуспроверяется
Варианты установки
i18n: polylang
storage: mysql, sqlite

Встроенный поиск WordPress (адрес вида /?s=запрос) работает на сервере: PHP ищет слова запроса в заголовках и тексте записей запросом к базе данных.

Где работаетна сервере
Как ищетИщет вхождение слов, словоформы не учитываются; записи с совпадением в заголовке показываются выше. Для более умного поиска ставят плагины.
ОграниченияКаждый поиск — запрос к базе данных на сервере. Работа на SQLite и с Polylang отдельно не проверялась.
Проверено2026-10-17

Темы

ТемаЦенаГотовность для мультиязычного проектаМнение автора
GeneratePress Premium ↗платно* тема GeneratePress бесплатная, модули GP Premium платные
вики 90 % проверено 19 из 31
сайт 90 % проверено 22 из 34
выберу Выбрана для проекта top-10-hosting вместо Reboot; полностью поддерживает Polylang. (2026-10-05)
Reboot ↗платно* лицензионная тема wpshop.ru
вики 86 % проверено 9 из 31 · мало данных
сайт 92 % проверено 11 из 34 · мало данных
—

Результаты по требованиям

Многое в WordPress зависит не от темы, а от плагинов. Например, хранение в SQLite (плагин SQLite Database Integration) одинаково работает с любой темой. С мультиязычностью иначе: её даёт плагин Polylang, но тема должна его поддерживать — многие темы поддерживают WPML, а Polylang нет. Значок в пунктирной рамке — результат перенесён из проверки с другой темой этого движка. Серый значок со знаком вопроса — результат верен, только если тема поддерживает нужный плагин, а для этой темы поддержка не подтверждена. Наведите на значок, чтобы увидеть подробности.

ТребованиеRebootGeneratePress Premium
Мультиязычность
Материал можно начать на неосновном языке ml-author-any-langплагин?плагин
Рубрики, теги и меню независимы по языкам ml-taxonomy-per-langплагин?плагин
Переключатель языков показывает только существующие переводы ml-switcher-existingплагин?плагин
hreflang только на существующие переводы ml-hreflang-existing проверить ↗плагин?плагин
Нет автостраниц с контентом основного языка ml-no-fallback-pages проверить ↗плагин?плагин
Основной язык в корне, остальные с префиксом ml-default-rootплагин?плагин
У каждого перевода свой slug ml-translated-slugsплагин?плагин
Перевод может иметь тот же slug, что и оригинал ml-same-slugнет?нет
Атрибут lang в нужном формате ml-html-langдоработкадоработка
Тема поддерживает выбранный плагин мультиязычности theme-i18n-compat?да
Переводы интерфейса для en, uk, ru, pt-BR ml-ui-stringsплагин?плагин
Контент доступен для автоматического перевода ИИ ml-ai-translatableдоработка?доработка
Статьи, навигация и поиск
Управление боковым меню sidebar-control??
Оглавление статьи toc-control??
Перелинковка как в DokuWiki internal-linksдоработкадоработка
Таксономии (теги, рубрики, свои классификаторы) taxonomies??
Поиск по сайту site-search??
Гибкость поиска search-replaceableплагинплагин
Подсветка кода code-highlight??
Пошаговые инструкции content-steps??
Свой код в шаблоны без правки темы (Inject Partials) theme-inject-partials??
Генерация страниц из данных (pSEO) data-pagesдоработкадоработка
Визуальная админка admin-uiдада
SEO
title, description и OG на уровне записи seo-meta проверить ↗плагинплагин
sitemap с языковыми версиями seo-sitemapплагинплагин
Корректный canonical seo-canonical проверить ↗плагинплагин
Микроразметка schema.org seo-schema??
Полный контроль URL seo-url-control??
Адреса латиницей, даже если текст на кириллице seo-url-translitплагинплагин
Скорость (Core Web Vitals) seo-cwv??
Хранение и окружение
Работает без сервера БД no-dbплагинплагин
Работает в окружении Nginx + PHP-FPM 8.5 runtime-phpдада
Стоимость
Стоимость (движок + тема + платные плагины) cost-total??
Работа с ИИ
Насколько хорошо ИИ работает с фреймворком ai-fluency??

Заметки

Тестируется только с лицензионными темами Reboot или GeneratePress Premium: неудачная тема топит SEO, и тест движка без нормального фронта ничего не говорит.

Два основных варианта: классика (MySQL) и WordPress на SQLite. Мультиязычность — только Polylang: остальные плагины не подошли, особенно на SQLite.

Плагины, которые работают

php: 8.5.11; web: ServBay (локально), Nginx + PHP-FPM (продакшен); wordpress: 7.1.2;

ПлагинВерсияНазначениеЦенаГде провереноПримечание
SQLite Database Integration3.0.2storageбесплатноstorage=sqliteОснова связки: WordPress работает на файле wp-content/database/.ht.sqlite. Занимает drop-in db.php. Подвохи WP-CLI: команды wp db * не работают (вызывают клиент MySQL); wp search-replace без --precise показывает завышенный счётчик, с --precise — точный.
Polylang3.8.10i18nбесплатноfront=generatepress storage=sqliteХранит языки штатными таксономиями WP — низкий риск на SQLite. en без префикса, ru на /ru/, язык по каталогу в URL. Проверено: <html lang>, hreflang, переводы в sitemap, переключатель в меню, синхронизация полей между переводами. Новых ошибок SQLite в логе нет. Ограничение бесплатной версии: одинаковый slug у статьи и перевода запрещён (в Pro разрешён); REST API переводов — только в Pro, в free — PHP-функции pll_* через WP-CLI. Сводка по критериям мультиязычности — в тесте 2026-10-17–wordpress–generatepress–polylang.
Yoast SEO28.6seoбесплатноi18n=polylang storage=sqliteЗамена SEOPress. Единственный SEO-плагин со встроенной интеграцией в Polylang. На SQLite созданы таблицы wp_yoast_* (27 миграций), wp yoast index --reindex проходит, в PHP-логе 0 новых строк. /sitemap_index.xml с <lastmod>, EN и RU в картах, переменная года в title, canonical, hreflang, og:locale на своём языке. Минус: в бесплатной версии нет HTML-карты сайта.
Secure Custom Fields (SCF)6.9.5fieldsбесплатноstorage=sqliteВыбран вместо ACF free: API как у ACF, ставится с wordpress.org, бесплатно даёт repeater и страницы опций (в ACF это только PRO).
Redis Object Cache3.0.0cacheбесплатноstorage=sqliteDrop-in object-cache.php работает вместе с db.php от SQLite. Замер: в 5–7 раз меньше запросов к SQLite, TTFB −16…19 %, админка примерно в 2 раза быстрее, попаданий ≈93 %. Подвох: запись в SQLite в обход WordPress (PDO, скрипты импорта) не видна до wp cache flush. На время разработки выключен.
Query Monitor4.0.7devбесплатноstorage=sqliteЕсть отдельная панель SQLite. Свой db.php не ставит, потому что его занимает SQLite.
URL Shortify Premium2.7.0linksплатноstorage=sqliteТаблицы wp_kc_us_* создаются, редирект /go/… 307, клики пишутся, отчёты в админке работают.
Clearfy Pro3.7.2utilityплатноstorage=sqliteТранслитерация: адреса записей, рубрик и меток и имена загружаемых файлов получаются латиницей, а не кириллицей. По умолчанию WordPress этого не делает, и для решения написано много плагинов; здесь используется Clearfy Pro. Ещё из возможностей используется отправка страниц на индексацию.
GP Premium2.5.6theme-addonплатноfront=generatepress storage=sqliteМодули WooCommerce и Site Library выключены как ненужные, остальные включены.

Плагины, от которых отказались — не повторять

ПлагинНазначениеПричинаКак провереноГде провереноПримечание
SEOPress
2026-10-05
seosqlite-incompatible-sqlв рабочем проектеstorage=sqliteSQL для <lastmod> в индексе sitemap использует MySQL-переменные @row_num :=, на SQLite падает и засоряет лог; в индексе нет <lastmod>. Остальное (sitemap, SEO-мета) работало.
WPMLi18nsqlite-risk-own-tablesпо документацииstorage=sqliteСобственные таблицы со сложным SQL — риск на SQLite, лишний вес.
TranslatePressi18nsqlite-risk-own-tablesпо документацииstorage=sqliteСобственные таблицы со сложным SQL — риск на SQLite, лишний вес.
Rank Mathseounreliable-sitemapпо опытуПо опыту на информационных сайтах без видимых причин переставал создавать sitemap.
Filter Everything PROfiltersarchitecture-mismatchпо документацииРаботает только с записями и метаполями. Не подходит, если данные лежат в своих таблицах.

История проверок

2026-10-17 — WordPress + GeneratePress + Polylang: опыт работы · используется · по опыту

gp-premium 2.5.6; polylang 3.8.10 (free);

ТребованиеРезультатОт чего зависитПримечание
Материал можно начать на неосновном языке ml-author-any-langплагинплагинPolylang: язык выбирается при создании записи, заглушка на основном языке не нужна
Рубрики, теги и меню независимы по языкам ml-taxonomy-per-langплагинплагинрубрики, метки и меню переводятся отдельно для каждого языка
Переключатель языков показывает только существующие переводы ml-switcher-existingплагинплагинв переключателе Polylang есть опция скрывать языки без перевода
hreflang только на существующие переводы ml-hreflang-existingплагинплагинhreflang выводится только для существующих переводов
Нет автостраниц с контентом основного языка ml-no-fallback-pagesплагинплагинPolylang не создаёт страниц-заглушек с контентом основного языка
У каждого перевода свой slug ml-translated-slugsплагинплагину каждого перевода свой slug
Перевод может иметь тот же slug, что и оригинал ml-same-slugнетплагинбесплатный Polylang не разрешает одинаковый slug у статьи и перевода; в Polylang Pro (платно) можно
Атрибут lang в нужном формате ml-html-langдоработкадвижокWordPress выводит lang="ru-RU"; лечится фильтром language_attributes в functions.php
Тема поддерживает выбранный плагин мультиязычности theme-i18n-compatдатемаGeneratePress Premium полностью поддерживает Polylang (по опыту работы)
Переводы интерфейса для en, uk, ru, pt-BR ml-ui-stringsплагинплагинстроки темы и плагинов — через Languages → Translations и .mo-файлы
Контент доступен для автоматического перевода ИИ ml-ai-translatableдоработкаплагинв бесплатной версии — через PHP-функции pll_set_post_language / pll_save_post_translations (WP-CLI); REST API переводов — в Pro
Перелинковка как в DokuWiki internal-linksдоработкадвижоксвоя схема WordPress: в редакторе ссылка ищется по заголовку записи; синтаксиса как в DokuWiki, видимых ссылок на несуществующие страницы и списка «Ссылки сюда» нет
Генерация страниц из данных (pSEO) data-pagesдоработкадвижоквозможно, но только своим кодом: из коробки генерации страниц из данных нет

Запись по опыту работы, а не отдельная проверка на стенде.

Итог по мультиязычности: «Polylang проходит почти по всем критериям, я не знаю, где бы он не соответствовал». Исключение одно: в бесплатной версии у статьи и её перевода не может быть одинаковый slug.

Мультиязычность в WordPress обеспечивает плагин, но тема должна его поддерживать. Многие темы поддерживают WPML, но не Polylang, поэтому результаты Polylang переносятся на тему только после того, как подтверждена её поддержка Polylang. GeneratePress Premium поддерживает его полностью; для Reboot поддержка Polylang не проверялась.

Перелинковка и генерация страниц из данных зависят от самого WordPress, а не от темы: ссылку на другую статью вставляют штатным редактором с поиском по заголовку (удобно, но не так, как в DokuWiki), а страницы из данных — только своим кодом.

html lang без региона

WordPress берёт lang из локали (ru_RU → ru-RU). Пример исправления для functions.php дочерней темы (в шаблоне lab/template-wordpress-sqlite пока не применён):

add_filter( 'language_attributes', function ( $output ) {
    return preg_replace( '/lang="([a-z]{2})-[A-Z]{2}"/', 'lang="$1"', $output );
} );

Что стоит перепроверить руками

  • Формат кодов в hreflang от Polylang: должен совпадать с принятым в профиле (pt-BR для pt).
  • Поведение переключателя с опцией скрытия на странице, переведённой не на все языки.
2026-10-17 — WordPress: адреса латиницей · используется · по опыту

clearfy-pro 3.7.2;

ТребованиеРезультатОт чего зависитПримечание
Адреса латиницей, даже если текст на кириллице seo-url-translitплагинплагинпо умолчанию WordPress оставляет кириллицу в адресах (как и DLE); решается плагином — в работе используется платный Clearfy Pro, бесплатных аналогов тоже много

По опыту работы: без плагина адреса записей, рубрик и меток с названиями на кириллице остаются кириллицей и в ссылках превращаются в %D0%…. Плагинов для транслитерации много; в работе используется платный Clearfy Pro, который заодно переводит в латиницу имена загружаемых файлов.

2026-10-17 — WordPress: гибкость поиска · без вывода · по опыту

ТребованиеРезультатОт чего зависитПримечание
Гибкость поиска search-replaceableплагинплагинзамена: встроенный поиск меняется плагинами, их много; языки, формы слов и где искать — зависят от выбранного плагина, отдельно не проверялось

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

2026-10-05 — WordPress + GeneratePress + SQLite + Polylang · используется · в рабочем проекте

generatepress 3.6.1; gp-premium 2.5.6; php 8.5.11; polylang 3.8.10; sqlite-database-integration 3.0.2; wordpress 7.1.2;

ТребованиеРезультатОт чего зависитПримечание
Материал можно начать на неосновном языке ml-author-any-lang?плагинсуществующие записи привязаны к EN; создание сначала на RU не проверялось
Переключатель языков показывает только существующие переводы ml-switcher-existing?плагинпереключатель в меню работает; поведение без перевода не проверялось
hreflang только на существующие переводы ml-hreflang-existing?плагинhreflang выводится; поведение при частичном переводе не проверялось
Основной язык в корне, остальные с префиксом ml-default-rootплагинплагинPolylang: en без префикса, ru на /ru/
Работает без сервера БД no-dbплагинплагинSQLite Database Integration, база в wp-content/database/.ht.sqlite
Работает в окружении Nginx + PHP-FPM 8.5 runtime-phpдадвижокPHP 8.5.11, PHP-лог чистый
title, description и OG на уровне записи seo-metaплагинплагинYoast: title/description на своём языке, переменная года, перевод шаблонов через строки Polylang
sitemap с языковыми версиями seo-sitemapплагинплагинYoast /sitemap_index.xml с <lastmod>, EN и RU в картах
Корректный canonical seo-canonicalплагинплагинYoast
Скорость (Core Web Vitals) seo-cwv?движокLighthouse не снимался; TTFB 115–163 мс без кеша, 115–135 мс с Redis
Визуальная админка admin-uiдадвижок

Тест восстановлен по git-истории и ARCHITECTURE.md проекта top-10-hosting (2026-09-17 … 2026-10-05).

Ход

  • 2026-09-17 — WordPress на SQLite заработал с первого раза. Поставлены Reboot + дочерняя тема и Clearfy Pro.
  • 2026-09-19 — SEOPress.
  • 2026-10-05 — переход на GeneratePress + GP Premium, Reboot удалён. Polylang, SCF, Query Monitor, тест Redis. SEOPress заменён на Yoast из-за SQL, несовместимого с SQLite.

Подвохи, которые нельзя забыть

  • WP-CLI: wp db * на SQLite не работает; wp search-replace — всегда с --precise.
  • Запись в SQLite в обход WordPress (PDO, импорт) не видна при включённом Redis до wp cache flush.
  • Сайт только по HTTPS: WP_HOME/WP_SITEURL фиксированные, а не из $_SERVER['HTTP_HOST'] (иначе ошибки canonical/sitemap и предупреждения WP-CLI).
  • Старый .gitignore от Hugo-проекта (dist/, public/) скрывал из git части плагинов и тем.
  • Перед продакшеном закрыть в Nginx доступ к wp-content/database/.

Что осталось проверить по критериям

ml-author-any-lang, ml-switcher-existing, ml-hreflang-existing — на странице, переведённой не на все языки; seo-cwv — Lighthouse; ai-fluency.

Хостинг для WordPress

Для WordPress нужен хостинг с PHP актуальной версии. Перед покупкой проверьте, какие версии PHP предлагает хостинг, можно ли выбрать Nginx и PHP-FPM, есть ли доступ по SSH и сколько памяти выделяется сайту. Для небольшого сайта на WordPress обычно хватает виртуального хостинга, для проекта с большой посещаемостью лучше VPS. Сравнить предложения по этим параметрам можно в каталогах TOP-10 Hosting:

  • Виртуальный хостинг — самый недорогой вариант: сервер настраивает и обслуживает провайдер, подходит для небольших сайтов.
  • VPS — свой виртуальный сервер: любая версия PHP, Nginx и доступ по SSH под вашим управлением.
  • Выделенные серверы — целый физический сервер для проектов с высокой нагрузкой.

Как установить WordPress самостоятельно и правильно обновлять

Скачайте архив с wordpress.org, распакуйте в корень сайта и пройдите установщик в браузере. Чтобы WordPress работал без сервера БД, до установки положите в wp-content/plugins/ плагин SQLite Database Integration — тогда база будет храниться в файле wp-content/database/.ht.sqlite. Для управления из консоли есть официальный инструмент WP-CLI.

Как обновлять

Ядро, плагины и темы обновляются из админки или через WP-CLI: wp core update, wp plugin update --all, wp theme update --all. Перед обновлением сделайте копию базы: на SQLite достаточно скопировать файл .ht.sqlite (команды wp db … на SQLite не работают). После обновления можно проверить файлы ядра командой wp core verify-checksums.

Подробности — в официальной документации: https://wordpress.org/documentation/.

Проверено: 2026-10-17