Skip to content

Вопросы на собеседовании: WordPress-разработчик

100 реальных вопросов с образцовыми ответами и пояснениями для уровня Senior WordPress-разработчик.

Смотреть пример резюме: WordPress-разработчик

Тренировка флешкарточками

Интервальное повторение · Hunter Pass

Вопросы

wordpresspluginsthemes

Я оставляю ядро WordPress заменяемым, переношу переносимое поведение в плагины, представление в тему, а бизнес-правила скрываю за явными доменными сервисами.

  • Ядро нельзя патчить, чтобы обновление оставалось заменой версии поставщика, а не проектом по слиянию кода.
  • Плагины владеют типами записей, правами, API и процессами, которые должны пережить смену темы.
  • Тема использует стабильные интерфейсы сервисов и управляет шаблонами, стилями и видом редактора, не превращаясь в слой данных.

Зачем это спрашивают: Интервьюер проверяет, умеет ли кандидат создавать долговечные границы WordPress вместо концентрации продукта в загрузочном файле темы.

wordpresshooksplugins

Я рассматриваю хуки как адаптеры на границе WordPress, а сами сценарии использования держу в обычных PHP-сервисах.

  • Небольшой регистратор связывает именованные callbacks, а конструкторы не регистрируют глобальное поведение скрытым образом.
  • Сервисы принимают типизированные входы и возвращают доменные результаты, поэтому тестам PHPUnit не нужен полный bootstrap WordPress.
  • Объекты WordPress, например WP_Post, преобразуются на границе и не проникают во все бизнес-правила.

Зачем это спрашивают: Сильный ответ отделяет механику интеграции с WordPress от тестируемой доменной логики.

plugins

Я использую mu-plugin только для платформенного поведения, которое должно загружаться в каждом запросе и не может отключаться для отдельного сайта.

  • Настройка окружения, интеграции хостинга и общесетевые меры безопасности подходят для этой границы лучше, чем необязательные продуктовые функции.
  • WordPress загружает только верхнеуровневые файлы mu-plugin, поэтому я использую маленький загрузчик для кода Composer с пространствами имен.
  • У mu-plugin нет обычных хуков активации и обновлений из админки, поэтому установка и работа со схемой выполняются инструментами деплоя.

Зачем это спрашивают: Интервьюер проверяет знание как эксплуатационных гарантий, так и ограничений жизненного цикла mu-plugin.

wordpress

Она превращает ядро WordPress и сторонние плагины в зафиксированные зависимости, а репозиторий становится описанием воспроизводимого приложения.

  • composer.lock проходит ревью и попадает в деплой, а wp-content разделяется на код приложения, управляемые пакеты и доступные для записи загрузки.
  • Отдельный публичный корень оставляет конфигурацию и vendor-файлы за пределами document root.
  • Для приватных или отсутствующих в Composer плагинов нужен репозиторий с аутентификацией или источник артефактов, а не ручная загрузка на production.

Зачем это спрашивают: Интервьюер хочет увидеть архитектуру зависимостей и воспроизводимость, а не просто знание команд Composer.

configartifactswordpress

Я собираю один артефакт и передаю конфигурацию конкретного окружения во время запуска, а не ветвлю код приложения по окружениям.

  • Доступ к базе, соли, API-ключи и настройки хоста приходят из менеджера секретов или переменных окружения.
  • wp-config.php объединяет неизменяемые значения по умолчанию с небольшим разрешенным списком переопределений окружения.
  • Terraform или Kubernetes владеет инфраструктурными значениями, а опции WordPress остаются контентом только когда редакторам действительно нужно их менять.

Зачем это спрашивают: Сильный ответ отличает секреты и инфраструктурную конфигурацию деплоя от редактируемого контента WordPress.

scalingload-balancingwordpress

Я делаю каждый веб-узел одноразовым и выношу все общее между запросами состояние из его локальной файловой системы и памяти.

  • Узлы используют один неизменяемый артефакт кода и подключаются к общим базе данных, объектному кешу и хранилищу медиа.
  • Health checks не запускают дорогой рендеринг WordPress, а балансировщик завершает TLS с корректной настройкой доверенных proxy-заголовков.
  • Sticky sessions не являются частью дизайна, потому что маскируют связанность состояния и делают failover неравномерным.

Зачем это спрашивают: Интервьюер оценивает понимание stateless WordPress, выходящее за рамки простого добавления PHP-контейнеров.

wordpress

Я храню оригиналы и сгенерированные размеры в общем объектном хранилище и раздаю их через CDN.

  • Перехват загрузок должен охватывать генерацию метаданных, удаление и пересоздание размеров изображений, а не только копирование оригинала.
  • Локальные диски остаются временным кешем, поэтому ни один запрос не зависит от файла, записанного конкретным pod.
  • Для приватных файлов используется авторизация и короткоживущие подписанные URL, а не публично читаемый bucket загрузок.

Зачем это спрашивают: Сильный ответ охватывает полный жизненный цикл медиа и не смешивает общее хранилище с публичным доступом.

sessionswordpress

Нет, сначала я уберу потребность в привязке, потому что любой узел с общими солями и хранилищами может проверить cookie аутентификации WordPress.

  • PHP-сессии в плагинах исключаются или переносятся в Redis с явным сроком жизни, если они действительно нужны старой интеграции.
  • Nonce и права пользователя остаются задачей WordPress и не требуют привязки на балансировщике.
  • Отказ от sticky sessions дает предсказуемую балансировку и позволяет убрать узел без потери состояния пользователя.

Зачем это спрашивают: Интервьюер проверяет, отличает ли кандидат cookie-аутентификацию WordPress от локальных сессий процесса.

designwordpress

Я отключаю WP-Cron, зависящий от запросов, запускаю наступившие события одним управляемым планировщиком, а тяжелую работу переношу в надежную очередь.

  • Kubernetes CronJob или планировщик платформы вызывает WP-CLI с фиксированной частотой без гонки всех веб-pod на пользовательском трафике.
  • Обработчики очереди атомарно забирают задачи и используют ключи идемпотентности, потому что доставка может повториться.
  • Плановые callbacks остаются короткими и записывают повторяемую работу вместо обработки целого каталога в одном PHP-запросе.

Зачем это спрашивают: Сильный ответ разделяет планирование и выполнение и учитывает повторную доставку в кластере.

restgraphqlwordpress

Я выбираю по контракту потребителя: REST для стабильных операций над ресурсами, а WPGraphQL, когда клиентам нужны гибкие вложенные графы контента.

  • REST имеет полноценную поддержку ядра, понятное HTTP-кеширование и более простые endpoints для записи.
  • WPGraphQL сокращает лишнюю загрузку записей, терминов и кастомных полей, но расширение схемы и ограничение стоимости запросов становятся задачами платформы.
  • Я не открываю оба варианта без причины, потому что два публичных контракта удваивают работу по авторизации, кешированию и совместимости.

Зачем это спрашивают: Интервьюер проверяет выбор на основе контракта, а не предпочтение модного стиля API.

wordpress

Я моделирую редакционный смысл, а не разметку страницы одного фронтенда, и публикую этот смысл через версионируемую схему.

  • Custom post types представляют долговечные сущности, таксономии задают общую классификацию, а структурированные поля заменяют непрозрачные HTML-блоки.
  • Переиспользуемые блоки допустимы, если их атрибуты имеют документированную форму API и путь миграции.
  • Настройки конкретного представления остаются необязательными, чтобы веб, мобильные и синдикационные клиенты по-разному отображали один контент.

Зачем это спрашивают: Сильный ответ показывает, что headless-модель контента должна пережить любую отдельную реализацию рендеринга.

nextjswordpress

Я выбираю режим для каждого route по свежести, персонализации и возможности кеширования, а не объявляю весь сайт статическим или динамическим.

  • Долгоживущие статьи могут использовать статическую генерацию с on-demand revalidation после публикации.
  • Сильно персонализированные страницы аккаунта используют серверный рендеринг и обходят общие кеши для пользовательских данных.
  • Preview-запросы используют доступ к черновикам и отдельный путь кеша, чтобы неопубликованный контент не попал в публичный вывод.

Зачем это спрашивают: Интервьюер оценивает, связывает ли кандидат режимы рендеринга Next.js с семантикой публикации WordPress.

wordpressheadless

Я использую короткоживущую подписанную передачу, которая включает preview-режим во фронтенде и загружает ревизию от имени текущего редактора.

  • WordPress проверяет право редактора и подписывает целевую запись, ревизию, срок действия и return URL.
  • Preview endpoint Next.js проверяет подпись перед установкой HTTP-only cookie режима просмотра.
  • Ответы preview приватны и не кешируются, а их API-токен нельзя повторно использовать для публичного просмотра.

Зачем это спрашивают: Сильный ответ сохраняет видимость ревизий и авторизацию на границе CMS и фронтенда.

wordpressheadlessauth

Я подбираю аутентификацию под клиент и на каждой границе данных оставляю авторизацию на базе capabilities WordPress.

  • Редакторские инструменты на том же origin могут использовать cookie WordPress и REST nonce, потому что у браузера уже есть защищенная сессия.
  • Серверные вызовы используют отдельного пользователя с минимальными правами и отзываемым application password либо scoped OAuth-данные, которые хранятся только на сервере.
  • Я избегаю долгоживущих JWT в browser storage, потому что отзыв, ротация и риск XSS становятся сложнее.

Зачем это спрашивают: Интервьюер проверяет, рассматриваются ли механизм аутентификации и политика авторизации как отдельные решения.

wordpressheadlesscaching

Я инвалидирую кеш по зависимостям контента после успешной публикации, а TTL использую как страховку, а не основной механизм.

  • Обновление записи очищает ее страницу, связанные архивы, страницы таксономий и ключи API-кеша из карты зависимостей.
  • WordPress отправляет подписанное событие после фиксации записи, а фронтенд устраняет дубликаты перед on-demand revalidation.
  • Широкая очистка CDN остается для изменений схемы или навигации, потому что она выбрасывает слишком много полезного кеша.

Зачем это спрашивают: Сильный ответ уравновешивает свежесть и эффективность кеша и привязывает инвалидацию к успешной записи WordPress.

wordpress

WordPress должен владеть канонической идентичностью контента и редакционными SEO-данными, а фронтенд отвечает за их итоговый HTML.

  • API явно отдает канонические пути, robots directives, структурированные метаданные и записи редиректов.
  • Next.js рендерит видимые серверу head tags и применяет редиректы на edge до возврата страницы.
  • Изменение URL создает редирект со старого пути и инвалидирует оба пути, чтобы поисковики не увидели конфликтующие canonical.

Зачем это спрашивают: Интервьюер проверяет, остается ли SEO сквозным контрактом после отделения представления.

cachingwordpress

Они убирают работу на разных слоях, поэтому я использую все три с отдельными владельцами и правилами инвалидации.

  • Redis или Memcached повторно использует полученные из базы объекты, но PHP и рендеринг шаблона все еще выполняются.
  • Full-page cache пропускает WordPress для анонимного HTML-ответа, а CDN отдает этот ответ рядом с посетителем.
  • Очистка должна затронуть каждый нужный слой, потому что сброс Redis не обновит устаревший HTML на edge.

Зачем это спрашивают: Сильный ответ понимает, какую работу исключает каждый кеш и к чему приводит устаревание нескольких слоев.

designwordpresscaching

Я делаю ключ публичного кеша маленьким и явным, а для действительно персональных данных обхожу общий HTML-кеш.

  • Локаль, host и ограниченный класс устройства могут менять публичную страницу, если от них зависит ответ.
  • Произвольные cookie никогда не входят в ключ, потому что они уничтожают hit rate и могут раскрыть персонализированный вывод.
  • Admin bar, корзина и данные аккаунта используют приватные фрагменты или некешируемые routes, а не отдельную full-page версию для каждого пользователя.

Зачем это спрашивают: Интервьюер оценивает, умеет ли кандидат сохранить и эффективность кеша, и изоляцию ответов.

queriescachingwordpress

Я разрешаю одному worker пересоздать значение, а остальным запросам отдаю устаревшие данные или предлагаю коротко отступить.

  • Атомарная блокировка Redis имеет короткую аренду и уникальный токен владельца, чтобы она не зависла и не была снята другим worker.
  • Stale-while-revalidate сохраняет полезную страницу во время пересоздания вместо отправки каждого промаха в MySQL.
  • К срокам жизни добавляется случайный разброс, чтобы связанные ключи не остыли в одну секунду.

Зачем это спрашивают: Сильный ответ использует ограниченную координацию и допустимые устаревшие данные вместо хрупкой глобальной блокировки.

wordpress

Я использую кастомную таблицу, когда данным нужны реляционные ограничения или запросы, которые общая 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