WordPress
Кратко о движке
| Семейство | wordpress |
|---|---|
| Назначение | cms |
| Лицензия | GPL-2.0-or-later |
| Цена | бесплатно |
| Сайт | https://wordpress.org |
| Статус | проверяется |
| Варианты установки | i18n: polylangstorage: 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 нет. Значок в пунктирной рамке — результат перенесён из проверки с другой темой этого движка. Серый значок со знаком вопроса — результат верен, только если тема поддерживает нужный плагин, а для этой темы поддержка не подтверждена. Наведите на значок, чтобы увидеть подробности.
| Требование | Reboot | GeneratePress 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 Integration | 3.0.2 | storage | бесплатно | storage=sqlite | Основа связки: WordPress работает на файле wp-content/database/.ht.sqlite. Занимает drop-in db.php. Подвохи WP-CLI: команды wp db * не работают (вызывают клиент MySQL); wp search-replace без --precise показывает завышенный счётчик, с --precise — точный. |
| Polylang | 3.8.10 | i18n | бесплатно | 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 SEO | 28.6 | seo | бесплатно | 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.5 | fields | бесплатно | storage=sqlite | Выбран вместо ACF free: API как у ACF, ставится с wordpress.org, бесплатно даёт repeater и страницы опций (в ACF это только PRO). |
| Redis Object Cache | 3.0.0 | cache | бесплатно | storage=sqlite | Drop-in object-cache.php работает вместе с db.php от SQLite. Замер: в 5–7 раз меньше запросов к SQLite, TTFB −16…19 %, админка примерно в 2 раза быстрее, попаданий ≈93 %. Подвох: запись в SQLite в обход WordPress (PDO, скрипты импорта) не видна до wp cache flush. На время разработки выключен. |
| Query Monitor | 4.0.7 | dev | бесплатно | storage=sqlite | Есть отдельная панель SQLite. Свой db.php не ставит, потому что его занимает SQLite. |
| URL Shortify Premium | 2.7.0 | links | платно | storage=sqlite | Таблицы wp_kc_us_* создаются, редирект /go/… 307, клики пишутся, отчёты в админке работают. |
| Clearfy Pro | 3.7.2 | utility | платно | storage=sqlite | Транслитерация: адреса записей, рубрик и меток и имена загружаемых файлов получаются латиницей, а не кириллицей. По умолчанию WordPress этого не делает, и для решения написано много плагинов; здесь используется Clearfy Pro. Ещё из возможностей используется отправка страниц на индексацию. |
| GP Premium | 2.5.6 | theme-addon | платно | front=generatepress storage=sqlite | Модули WooCommerce и Site Library выключены как ненужные, остальные включены. |
Плагины, от которых отказались — не повторять
| Плагин | Назначение | Причина | Как проверено | Где проверено | Примечание |
|---|---|---|---|---|---|
| SEOPress 2026-10-05 | seo | sqlite-incompatible-sql | в рабочем проекте | storage=sqlite | SQL для <lastmod> в индексе sitemap использует MySQL-переменные @row_num :=, на SQLite падает и засоряет лог; в индексе нет <lastmod>. Остальное (sitemap, SEO-мета) работало. |
| WPML | i18n | sqlite-risk-own-tables | по документации | storage=sqlite | Собственные таблицы со сложным SQL — риск на SQLite, лишний вес. |
| TranslatePress | i18n | sqlite-risk-own-tables | по документации | storage=sqlite | Собственные таблицы со сложным SQL — риск на SQLite, лишний вес. |
| Rank Math | seo | unreliable-sitemap | по опыту | По опыту на информационных сайтах без видимых причин переставал создавать sitemap. | |
| Filter Everything PRO | filters | architecture-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