Вопросы на собеседовании: WordPress-разработчик
100 реальных вопросов с образцовыми ответами и пояснениями для уровня Senior WordPress-разработчик.
Смотреть пример резюме: WordPress-разработчик →Тренировка флешкарточками
Интервальное повторение · Hunter Pass
Вопросы
Я оставляю ядро WordPress заменяемым, переношу переносимое поведение в плагины, представление в тему, а бизнес-правила скрываю за явными доменными сервисами.
- Ядро нельзя патчить, чтобы обновление оставалось заменой версии поставщика, а не проектом по слиянию кода.
- Плагины владеют типами записей, правами, API и процессами, которые должны пережить смену темы.
- Тема использует стабильные интерфейсы сервисов и управляет шаблонами, стилями и видом редактора, не превращаясь в слой данных.
Зачем это спрашивают: Интервьюер проверяет, умеет ли кандидат создавать долговечные границы WordPress вместо концентрации продукта в загрузочном файле темы.
Я рассматриваю хуки как адаптеры на границе WordPress, а сами сценарии использования держу в обычных PHP-сервисах.
- Небольшой регистратор связывает именованные callbacks, а конструкторы не регистрируют глобальное поведение скрытым образом.
- Сервисы принимают типизированные входы и возвращают доменные результаты, поэтому тестам PHPUnit не нужен полный bootstrap WordPress.
- Объекты WordPress, например WP_Post, преобразуются на границе и не проникают во все бизнес-правила.
Зачем это спрашивают: Сильный ответ отделяет механику интеграции с WordPress от тестируемой доменной логики.
Я использую mu-plugin только для платформенного поведения, которое должно загружаться в каждом запросе и не может отключаться для отдельного сайта.
- Настройка окружения, интеграции хостинга и общесетевые меры безопасности подходят для этой границы лучше, чем необязательные продуктовые функции.
- WordPress загружает только верхнеуровневые файлы mu-plugin, поэтому я использую маленький загрузчик для кода Composer с пространствами имен.
- У mu-plugin нет обычных хуков активации и обновлений из админки, поэтому установка и работа со схемой выполняются инструментами деплоя.
Зачем это спрашивают: Интервьюер проверяет знание как эксплуатационных гарантий, так и ограничений жизненного цикла mu-plugin.
Она превращает ядро WordPress и сторонние плагины в зафиксированные зависимости, а репозиторий становится описанием воспроизводимого приложения.
- composer.lock проходит ревью и попадает в деплой, а wp-content разделяется на код приложения, управляемые пакеты и доступные для записи загрузки.
- Отдельный публичный корень оставляет конфигурацию и vendor-файлы за пределами document root.
- Для приватных или отсутствующих в Composer плагинов нужен репозиторий с аутентификацией или источник артефактов, а не ручная загрузка на production.
Зачем это спрашивают: Интервьюер хочет увидеть архитектуру зависимостей и воспроизводимость, а не просто знание команд Composer.
Я собираю один артефакт и передаю конфигурацию конкретного окружения во время запуска, а не ветвлю код приложения по окружениям.
- Доступ к базе, соли, API-ключи и настройки хоста приходят из менеджера секретов или переменных окружения.
- wp-config.php объединяет неизменяемые значения по умолчанию с небольшим разрешенным списком переопределений окружения.
- Terraform или Kubernetes владеет инфраструктурными значениями, а опции WordPress остаются контентом только когда редакторам действительно нужно их менять.
Зачем это спрашивают: Сильный ответ отличает секреты и инфраструктурную конфигурацию деплоя от редактируемого контента WordPress.
Я делаю каждый веб-узел одноразовым и выношу все общее между запросами состояние из его локальной файловой системы и памяти.
- Узлы используют один неизменяемый артефакт кода и подключаются к общим базе данных, объектному кешу и хранилищу медиа.
- Health checks не запускают дорогой рендеринг WordPress, а балансировщик завершает TLS с корректной настройкой доверенных proxy-заголовков.
- Sticky sessions не являются частью дизайна, потому что маскируют связанность состояния и делают failover неравномерным.
Зачем это спрашивают: Интервьюер оценивает понимание stateless WordPress, выходящее за рамки простого добавления PHP-контейнеров.
Я храню оригиналы и сгенерированные размеры в общем объектном хранилище и раздаю их через CDN.
- Перехват загрузок должен охватывать генерацию метаданных, удаление и пересоздание размеров изображений, а не только копирование оригинала.
- Локальные диски остаются временным кешем, поэтому ни один запрос не зависит от файла, записанного конкретным pod.
- Для приватных файлов используется авторизация и короткоживущие подписанные URL, а не публично читаемый bucket загрузок.
Зачем это спрашивают: Сильный ответ охватывает полный жизненный цикл медиа и не смешивает общее хранилище с публичным доступом.
Нет, сначала я уберу потребность в привязке, потому что любой узел с общими солями и хранилищами может проверить cookie аутентификации WordPress.
- PHP-сессии в плагинах исключаются или переносятся в Redis с явным сроком жизни, если они действительно нужны старой интеграции.
- Nonce и права пользователя остаются задачей WordPress и не требуют привязки на балансировщике.
- Отказ от sticky sessions дает предсказуемую балансировку и позволяет убрать узел без потери состояния пользователя.
Зачем это спрашивают: Интервьюер проверяет, отличает ли кандидат cookie-аутентификацию WordPress от локальных сессий процесса.
Я отключаю WP-Cron, зависящий от запросов, запускаю наступившие события одним управляемым планировщиком, а тяжелую работу переношу в надежную очередь.
- Kubernetes CronJob или планировщик платформы вызывает WP-CLI с фиксированной частотой без гонки всех веб-pod на пользовательском трафике.
- Обработчики очереди атомарно забирают задачи и используют ключи идемпотентности, потому что доставка может повториться.
- Плановые callbacks остаются короткими и записывают повторяемую работу вместо обработки целого каталога в одном PHP-запросе.
Зачем это спрашивают: Сильный ответ разделяет планирование и выполнение и учитывает повторную доставку в кластере.
Я выбираю по контракту потребителя: REST для стабильных операций над ресурсами, а WPGraphQL, когда клиентам нужны гибкие вложенные графы контента.
- REST имеет полноценную поддержку ядра, понятное HTTP-кеширование и более простые endpoints для записи.
- WPGraphQL сокращает лишнюю загрузку записей, терминов и кастомных полей, но расширение схемы и ограничение стоимости запросов становятся задачами платформы.
- Я не открываю оба варианта без причины, потому что два публичных контракта удваивают работу по авторизации, кешированию и совместимости.
Зачем это спрашивают: Интервьюер проверяет выбор на основе контракта, а не предпочтение модного стиля API.
Я моделирую редакционный смысл, а не разметку страницы одного фронтенда, и публикую этот смысл через версионируемую схему.
- Custom post types представляют долговечные сущности, таксономии задают общую классификацию, а структурированные поля заменяют непрозрачные HTML-блоки.
- Переиспользуемые блоки допустимы, если их атрибуты имеют документированную форму API и путь миграции.
- Настройки конкретного представления остаются необязательными, чтобы веб, мобильные и синдикационные клиенты по-разному отображали один контент.
Зачем это спрашивают: Сильный ответ показывает, что headless-модель контента должна пережить любую отдельную реализацию рендеринга.
Я выбираю режим для каждого route по свежести, персонализации и возможности кеширования, а не объявляю весь сайт статическим или динамическим.
- Долгоживущие статьи могут использовать статическую генерацию с on-demand revalidation после публикации.
- Сильно персонализированные страницы аккаунта используют серверный рендеринг и обходят общие кеши для пользовательских данных.
- Preview-запросы используют доступ к черновикам и отдельный путь кеша, чтобы неопубликованный контент не попал в публичный вывод.
Зачем это спрашивают: Интервьюер оценивает, связывает ли кандидат режимы рендеринга Next.js с семантикой публикации WordPress.
Я использую короткоживущую подписанную передачу, которая включает preview-режим во фронтенде и загружает ревизию от имени текущего редактора.
- WordPress проверяет право редактора и подписывает целевую запись, ревизию, срок действия и return URL.
- Preview endpoint Next.js проверяет подпись перед установкой HTTP-only cookie режима просмотра.
- Ответы preview приватны и не кешируются, а их API-токен нельзя повторно использовать для публичного просмотра.
Зачем это спрашивают: Сильный ответ сохраняет видимость ревизий и авторизацию на границе CMS и фронтенда.
Я подбираю аутентификацию под клиент и на каждой границе данных оставляю авторизацию на базе capabilities WordPress.
- Редакторские инструменты на том же origin могут использовать cookie WordPress и REST nonce, потому что у браузера уже есть защищенная сессия.
- Серверные вызовы используют отдельного пользователя с минимальными правами и отзываемым application password либо scoped OAuth-данные, которые хранятся только на сервере.
- Я избегаю долгоживущих JWT в browser storage, потому что отзыв, ротация и риск XSS становятся сложнее.
Зачем это спрашивают: Интервьюер проверяет, рассматриваются ли механизм аутентификации и политика авторизации как отдельные решения.
Я инвалидирую кеш по зависимостям контента после успешной публикации, а TTL использую как страховку, а не основной механизм.
- Обновление записи очищает ее страницу, связанные архивы, страницы таксономий и ключи API-кеша из карты зависимостей.
- WordPress отправляет подписанное событие после фиксации записи, а фронтенд устраняет дубликаты перед on-demand revalidation.
- Широкая очистка CDN остается для изменений схемы или навигации, потому что она выбрасывает слишком много полезного кеша.
Зачем это спрашивают: Сильный ответ уравновешивает свежесть и эффективность кеша и привязывает инвалидацию к успешной записи WordPress.
WordPress должен владеть канонической идентичностью контента и редакционными SEO-данными, а фронтенд отвечает за их итоговый HTML.
- API явно отдает канонические пути, robots directives, структурированные метаданные и записи редиректов.
- Next.js рендерит видимые серверу head tags и применяет редиректы на edge до возврата страницы.
- Изменение URL создает редирект со старого пути и инвалидирует оба пути, чтобы поисковики не увидели конфликтующие canonical.
Зачем это спрашивают: Интервьюер проверяет, остается ли SEO сквозным контрактом после отделения представления.
Они убирают работу на разных слоях, поэтому я использую все три с отдельными владельцами и правилами инвалидации.
- Redis или Memcached повторно использует полученные из базы объекты, но PHP и рендеринг шаблона все еще выполняются.
- Full-page cache пропускает WordPress для анонимного HTML-ответа, а CDN отдает этот ответ рядом с посетителем.
- Очистка должна затронуть каждый нужный слой, потому что сброс Redis не обновит устаревший HTML на edge.
Зачем это спрашивают: Сильный ответ понимает, какую работу исключает каждый кеш и к чему приводит устаревание нескольких слоев.
Я делаю ключ публичного кеша маленьким и явным, а для действительно персональных данных обхожу общий HTML-кеш.
- Локаль, host и ограниченный класс устройства могут менять публичную страницу, если от них зависит ответ.
- Произвольные cookie никогда не входят в ключ, потому что они уничтожают hit rate и могут раскрыть персонализированный вывод.
- Admin bar, корзина и данные аккаунта используют приватные фрагменты или некешируемые routes, а не отдельную full-page версию для каждого пользователя.
Зачем это спрашивают: Интервьюер оценивает, умеет ли кандидат сохранить и эффективность кеша, и изоляцию ответов.
Я разрешаю одному worker пересоздать значение, а остальным запросам отдаю устаревшие данные или предлагаю коротко отступить.
- Атомарная блокировка Redis имеет короткую аренду и уникальный токен владельца, чтобы она не зависла и не была снята другим worker.
- Stale-while-revalidate сохраняет полезную страницу во время пересоздания вместо отправки каждого промаха в MySQL.
- К срокам жизни добавляется случайный разброс, чтобы связанные ключи не остыли в одну секунду.
Зачем это спрашивают: Сильный ответ использует ограниченную координацию и допустимые устаревшие данные вместо хрупкой глобальной блокировки.
Я использую кастомную таблицу, когда данным нужны реляционные ограничения или запросы, которые общая meta-схема не обслуживает предсказуемо.
- Заказам, бронированиям и журналам событий часто нужны типизированные столбцы, уникальные ключи и составные индексы.
- Posts и meta подходят для редакционного контента, которому полезны ревизии, права и API ядра.
- Вместе с кастомной таблицей появляются repository API, явные версии схемы, правила хранения и область Multisite.
Зачем это спрашивают: Интервьюер проверяет, следует ли дизайн базы паттернам доступа, а не универсальному соглашению WordPress.
Закрытые вопросы
- 21
Как вы проектируете индексы для большой кастомной таблицы WordPress?
designwordpressindexes - 22
Почему autoloaded options являются архитектурной проблемой на большом WordPress-сайте?
wordpress - 23
Какая работа должна остаться синхронной в WordPress, а какую следует перенести в очередь?
wordpressdata-structures - 24
Как решить, должны ли данные в WordPress Multisite быть отдельными для сайта или общими для сети?
wordpressmultisite - 25
Какие архитектурные последствия имеет domain mapping в Multisite?
multisite - 26
Как бы вы спроектировали network activation и автоматический provisioning сайтов для Multisite-плагина?
designpluginsmultisite - 27
Как должны быть разграничены группы постоянного object cache в Multisite?
multisitecaching - 28
Когда отдельные установки WordPress лучше, чем Multisite?
wordpressmultisite - 29
Как вы определяете границы безопасности в корпоративной WordPress-платформе?
wordpress - 30
Как бы вы спроектировали права по принципу least privilege для кастомного редакционного процесса?
design - 31
Как вы управляете риском зависимостей и supply chain в WordPress-приложении на Composer?
wordpressdependencies - 32
Какую стратегию файловой системы и обновлений вы бы выбрали для WordPress в контейнерах?
wordpresscontainers - 33
Как вы контролируете доступность REST API на корпоративном WordPress-сайте?
restwordpress - 34
Как раздавать защищенные медиа из WordPress, не делая uploads публичным?
wordpress - 35
Что должно входить в неизменяемый артефакт деплоя WordPress?
deploymentartifactsimmutability - 36
Как развивать схему WordPress-плагина, не ломая rolling deployment?
wordpresspluginsschema - 37
Чем миграции схемы базы отличаются от миграций контента WordPress?
databaseschemamigrations - 38
Что ограничивает blue-green или rolling deployments WordPress?
deployment-strategieswordpressdeployment - 39
Как бы вы организовали большую библиотеку блоков для нескольких WordPress-продуктов?
wordpress - 40
Какую роль theme.json должен играть в корпоративной дизайн-системе?
design-systemthemesblock-themes - 41
Как вы выбираете между статическим и динамическим рендерингом блока Gutenberg?
gutenberg - 42
Как развивать широко используемый блок, не делая старые записи невалидными?
- 43
Как управлять patterns и свободой редактора на большой издательской платформе?
- 44
Как определить источник истины при интеграции WordPress с CRM или commerce-платформой?
wordpress - 45
Как обеспечить идемпотентность интеграций WordPress через очередь?
wordpressidempotencydata-structures - 46
Какого контракта вы бы потребовали для входящих webhooks в WordPress?
wordpresswebhooks - 47
Какие границы кода вы проверяете на senior review WordPress-плагина?
wordpressplugins - 48
Как бы вы сочетали статический анализ и тесты в сложной кодовой базе WordPress?
wordpresstesting - 49
Как определить compatibility matrix для WordPress-плагина под корпоративный хостинг?
wordpressplugins - 50
Как Kubernetes и Terraform вписываются в масштабируемую архитектуру WordPress, не скрывая проблемы приложения?
wordpresskubernetesterraform - 51
Издатель хочет перейти на headless WordPress ради быстрой доставки, но редакторы зависят от предпросмотра и множества существующих плагинов; что вы порекомендуете?
wordpresspluginsheadless - 52
Команда может создать свой редакционный процесс или купить поддерживаемый плагин, который покрывает большинство требований; как вы выберете?
plugins - 53
Большой WordPress-плагин замедляет работу команды, и одна группа предлагает разделить его на сервисы; что вы сделаете сначала?
wordpressplugins - 54
Компания запускает региональные сайты с общим брендом, но разными юридическими владельцами и графиками релизов; выберете ли вы Multisite?
multisite - 55
Руководство спрашивает, перенести ли корпоративный парк WordPress на WordPress VIP или запускать его на существующей Kubernetes-платформе; как вы представите выбор?
wordpresskubernetes - 56
Команда Next.js хочет WPGraphQL, а существующие потребители используют REST API; стали бы вы вводить второй API контента?
restgraphqlnextjs - 57
Новостной сайт WordPress падает, когда важная публикация вызывает всплеск трафика; каковы ваши первые действия и постоянное исправление?
wordpress - 58
После релиза WordPress MySQL оказывается перегружен, но ошибки приложения не показывают причину; как вы возглавите расследование?
wordpress - 59
Клиент сообщает, что увидел фрагмент аккаунта другого пользователя на кешированной странице WordPress; что вы сделаете?
wordpresscaching - 60
Изменение инвалидации кеша заставляет каждую публикацию очищать почти весь сайт и перегружает WordPress; как вы это исправите?
wordpresscaching - 61
Подтверждена компрометация широко используемого плагина во время важной кампании; как вы проведете инцидент?
soft-skillsincidentsplugins - 62
Миграция контента завершилась с неверными связями, а редакторы продолжили публикацию; будете ли вы восстанавливать базу?
databasemigrations - 63
Обновление PHP или WordPress вызывает незаметную регрессию checkout после деплоя; как выбрать между откатом и исправлением вперед?
deploymentrollbackwordpress - 64
После повторов задач очереди клиенты получают дубли писем и внешних обновлений; как исправить поведение?
resiliencewordpressdata-structures - 65
Редакторы успешно публикуют в WordPress, но сайт Next.js иногда остается устаревшим; с чего вы начнете?
nextjswordpress - 66
Администратор Multisite может получить через кастомный endpoint контент другого тенанта; как вы отреагируете и предотвратите повторение?
multisiteendpoints - 67
Нужно перевести парк устаревших WordPress-сайтов на поддерживаемую версию PHP без остановки продуктовой работы; как вы построите последовательность?
wordpress - 68
Как бы вы провели крупное обновление ядра WordPress на сайтах с разными сочетаниями плагинов?
wordpresspluginsupgrades - 69
Редакторам нужен редактор блоков, но в legacy-теме накопились годы shortcode и кастомных шаблонов; как вы проведете миграцию?
themesgutenbergshortcodes - 70
Крупному WordPress-сайту нужно перенести медиабиблиотеку в object storage без битых URL и остановки загрузок; каков ваш план?
wordpress - 71
Продукт хочет заменить классический frontend WordPress на Next.js, продолжая еженедельные релизы; как вы примените strangler rollout?
migrationwordpressnextjs - 72
Нагруженному WooCommerce-магазину нужно перейти на HPOS, но несколько расширений напрямую используют posts заказов; как вы поступите?
decision-makingwoocommerce - 73
Нужно изменить модель данных кастомного плагина во время rolling deployment; как применить expand-contract на практике?
modelingdeploymentplugins - 74
Критичный коммерческий плагин прекращает работу; как заменить его, не привязав продукт к следующему поставщику?
procurementplugins - 75
Какие гейты вы потребуете для zero-downtime rollout WordPress с изменениями кода и данных?
wordpress - 76
Вы принимаете несколько WordPress-команд с разными практиками кода и ревью; какие стандарты введете сначала?
ownershipwordpress - 77
На ревью вы видите callback на save_post, который вызывает внешний API и снова обновляет запись; какую обратную связь дадите?
feedbackapicallbacks - 78
Pull request добавляет сырой SQL к post meta для ускорения отчета; как вы его проверите?
code-reviewsql - 79
Подрядчик добавляет REST endpoint для экспорта клиентских записей; какую проверку безопасности вы потребуете?
restendpoints - 80
Middle-разработчик постоянно просит вас проектировать его WordPress-функции; как развить у него владение?
mentoringownershipdesign - 81
Команда хочет полное браузерное покрытие сложного WordPress-плагина, но релизы уже медленные; какую стратегию тестов вы выберете?
wordpresspluginscoverage - 82
Вы ведете миграцию WordPress с senior-инженерами, junior-разработчиками и временными подрядчиками; как безопасно разделить работу?
migrationswordpress - 83
Только один инженер понимает кастомный деплой WordPress и процесс инцидентов; как снизить bus factor?
incidentsdeploymentconcurrency - 84
Как вы одобрите новый WordPress-плагин для использования по всей компании?
wordpressplugins - 85
Маркетинг хочет SaaS для персонализации, который также можно создать внутри WordPress; как сравнить варианты?
discoverycloudwordpress - 86
Поставщик предлагает отличный продукт поиска для WordPress, но использует закрытый индекс и query API; какие гарантии вы потребуете?
indexesqueriesapi - 87
Прибыльный WordPress-продукт зависит от child theme с множеством overrides и глобальных функций; как модернизировать его постепенно?
themeswordpress - 88
Стейкхолдеры не видят ценности в работе с техническим долгом WordPress; как решить, что финансировать?
tech-debtcommunicationstakeholder-management - 89
В организации накопилось много администраторов WordPress и общих сервисных аккаунтов; как восстановить принцип минимальных прав?
least-privilegewordpress - 90
Секрет интеграции WordPress мог попасть в логи сборки; как вы проведете ротацию?
secretswordpress - 91
Продукт хочет хранить в WordPress подробные профили клиентов для персонализации, а безопасность требует минимизировать PII; что вы предложите?
designwordpresspii - 92
Команда WooCommerce предлагает обрабатывать данные карт в кастомном checkout-плагине ради контроля дизайна; что вы ответите?
designpluginswoocommerce - 93
Юристы требуют audit trail изменений регулируемого контента WordPress; как вы его реализуете?
wordpress - 94
Бизнес просит бессрочно хранить все отправки WordPress-форм на случай будущей пользы; как вы оспорите запрос?
formswordpress - 95
Как провести квартальную проверку доступов корпоративного WordPress-парка, не превратив ее в ритуал с таблицей?
wordpressspreadspreadsheets - 96
Руководители говорят, что резервные копии доказывают восстановимость WordPress-платформы; какие доказательства вы запросите?
backupswordpress - 97
Редакторы отвергают технически чистую систему блоков, потому что обычная публикация стала медленнее; как вы отреагируете?
system-design - 98
Маркетинг обещает запуск кампании до завершения security review рискованной интеграции WordPress-плагина; что вы сделаете?
wordpresspluginspromises - 99
Юристы требуют немедленного удаления опубликованного материала, но CDN и headless-кеши могут его сохранять; как сделать обещание достоверным?
headlesscaching - 100
Руководители требуют одну фиксированную дату модернизации смешанного парка WordPress до исследования; как вы ответите?
estimationwordpress