ГлавнаяПлагины13 полезных инструментов для WordPress-разработчиков

13 полезных инструментов для WordPress-разработчиков

Со времен появления WordPress в 2003 году и за 11 лет его развития многое изменилось. Не только в самом ядре. Появились тысячи плагинов и тем решающих любые задачи. Можно сделать магазин, форум или даже социальную сеть с личными сообщениями, упоминаниями, группами и все это в экосистеме WordPress.

За это долгое время развивалось и другое важное направление — инструменты для разработки и отладки кода под WordPress. Они делают платформу еще более привлекательной и удобной не только для конечных пользователей, но и для разработчиков.

Инструменты, упомянутые в статье, сэкономят вам часы (быть может и дни), позволят лучше понимать что происходит в коде и создавать надежные сайты, приложения, темы и плагины. При должной усидчивости и отладке возможно ускорить код, а значит уменьшить время загрузки страниц.

1. Серия плагинов Debug Bar

Плагин Debug Bar позволяет заглянуть под капот сайта и увидеть, что происходит при открытии страниц и не только. Пожалуй, основная задача, которую выполняет плагин — помощь в поиске медленных «узлов» на сайте. Ими могут оказаться SQL-запросы, события и фильтры.

Плагин Debug Bar для WordPress

Плагин Debug Bar для WordPress

Установив плагин и дополнительные расширения можно увидеть ряд полезной информации:

  1. Выполненные запросы к базе данных и время их выполнения.
  2. События и фильтры, список обработчиков (коллбеков), общее время исполнения и количество вызовов (Debug Bar Slow Actions).
  3. Содержимое WP_Query.
  4. Rewrite Rule, которое было использовано при обработке запроса, а также сам запрос (Request и Query String).
  5. Статистику кэширования объектов.
  6. Содержимое транзитного кэша (Debug Bar Transients).
  7. Количество потребляемой памяти, версии PHP и MySQL.
  8. Запланированные Cron-задачи (Debug Bar Cron).

С помощью Debug Bar Console можно исполнять произвольный PHP-код или SQL-запросы после загрузки WordPress, что очень удобно, если вы хотите посмотреть, как что-то работает без постоянных переключений между редактором кода и браузером.

Дополнение Debug Bar Extender включает в себя несколько методов, которые можно использовать в своем коде для засекания времени исполнения и просмотра содержимого переменных. Для этой задачи, возможно, лучше подойдет Xdebug (будет рассмотрен ниже).

Подробнее о плагине и дополнениях смотрите в руководстве Отладка в WordPress с помощью плагина Debug Bar.

2. WP CLI

Центр управления WordPress из терминала (командной строки). Пожалуй, все, что вы можете сделать из административной части WordPress можно повторить с помощью команды из терминала, а значит автоматизировать bash-скриптом. Есть и функционал, который недоступен через графический интерфейс.

Полный список команд доступен на официальном сайте. Там же можно найти дополнения ко многим популярным плагинам (Advanced Custom Fields, Jetpack). Ниже мы рассмотрим пару интересных возможностей утилиты WP CLI.

Проверка WordPress после взлома или заражения

Команда wp core verify-checksums позволяет проверить целостность установки WordPress. Полезна, если ваш сайт подвергся заражению или был взломан. С помощью этой команды можно точно диагностировать изменены ли какие-то файлы ядра или нет.

# Все в порядке
kolya$ wp core verify-checksums
Success: WordPress install verifies against checksums.

# Файл wp-comments-post.php был изменен и не прошел проверку
kolya$ wp core verify-checksums
Warning: File doesn't verify against checksum: wp-comments-post.php
Error: WordPress install doesn't verify against checksums.

Работа с медиафайлами в WP-CLI

Часто необходимо выполнить регенерацию картинок, загруженных на сайт. Вместо плагина Regenerate Thumbnails вы можете использовать команду wp media regenerate. Дополнительные параметры позволяют выполнить операцию для всех медиафайлов или только для нескольких.

Работа с миниатюрами в WP CLI

Работа с миниатюрами в WP CLI

Если вы переезжаете с другой CMS или хотите разом добавить не один десяток файлов в медиафайлы WordPress, воспользуйтесь командой wp media import. Она позволяет импортировать все файлы находящиеся в заданной папке или по указанному URL.

3. Плагин Core Control

Еще один «швейцарский нож», с несколькими модулями и приличным функционалом для управления внутренним функционалом ядра WordPress. После активации плагин Core Control доступен в разделе Tools → Core Control.

Модуль для Cron, в отличие от Debug Bar, позволяет не только просматривать задачи, но и запускать их не дожидаясь установленного времени.

Модуль Filesystem позволяет управлять транспортами, которые используются для обновления ядра, плагинов и тем. Отметим, что транспорт по умолчанию можно установить с помощью константы FS_METHOD в wp-config.php или через фильтр filesystem_method.

Работа с файловой системой в Core Control

Работа с файловой системой в Core Control

Модули HTTP Access и HTTP Access Logger направлены на отслеживание работы с HTTP-транспортами и запросов, которые отправляет ваш сайт. Если вы разрабатываете плагин, который общается с внешними сервисами, например, Twitter или ВКонтакте, то оба модуля очень пригодятся.

Updates Module добавляет опции для отключения автоматических проверок обновлений ядра, плагинов и тем.

Более подробное описание модулей вы найдете в нашей предыдущей статье.

4. Плагин Query Monitor

SQL-запросы всегда занимают приличное время и иногда чересчур большое. Например, если некий функционал на вашем сайте запрашивает список записей или страниц с каким-то определенным значением из дополнительных полей, а в базе данных десятки тысяч записей, то SQL-запрос будет очень медленным (см. Производительность meta_query). В результате страницы могут генерироваться на сервере несколько секунд. Для сравнения, WordPress с темой по умолчанию и без плагинов в среднем генерирует страницу за 250 миллисекунд.

Плагин Query Monitor отображает запросы к базе данных, скорость выполнения и функцию, которая выполняла запрос. Как и в Debug Bar здесь можно увидеть Rewrite Rule и содержимое WP_Query, потребление памяти и другие мелочи.

Список SQL запросов в Query Monitor

Список SQL запросов в Query Monitor

В отдельной таблице список всех событий (фильтров нет) и очередь обработчиков для каждого. Думаю, у многих хоть раз возникали проблемы с тем, что собственный обработчик «не работал» из-за неправильного приоритета.

Небольшая табличка с названием Conditionals показывает условные теги (функции вида is_singleis_404 и т. п.), подсвечивая зеленым цветом те, что отдали true на открытой странице.

Условные теги в Query Monitor

Условные теги в Query Monitor

Более детальное знакомство с плагином в статье Отладка SQL запросов в WordPress с помощью Query Monitor.

5. XHProf и Xdebug

Инструменты для профилирования и отладки PHP-кода. Позволяют отследить медленные участки кода, просматривать содержимое переменных вместо использования var_dump(), var_export() или print_r().

Отладка и профилирование в Xdebug

Отладка и профилирование в Xdebug

С первоначальной настройкой и использованием можно познакомиться в нашей статье о профилировании или поискать видеоуроки в интернете для вашего редактора.

6. Log Deprecated Notices

Плагин Log Deprecated Notices

Плагин Log Deprecated Notices

Плагин Log Deprecated Notices ведет учет использования устаревших файлов, функций и аргументов к функциям WordPress. В случае вызова старых функций или неверных аргументов, плагин постарается подсказать как исправить ситуацию и предложит альтернативную функцию.

7. Плагины Theme Check и Plugin Check

Плагины Theme Check и Plugin Check автоматически тестируют темы и плагины на соответствие стандартам WordPress. При нахождении ошибок они сообщают, что именно не так, указывают на проблемную строку кода, дают советы по исправлению ситуации и полезные ссылки.

Проверка темы с помощью Theme Check

Проверка темы с помощью Theme Check

Если вы готовитесь опубликовать свою тему или плагин на сайте WordPress.org, то использование этих плагинов — обязательный шаг.

8. Rewrite Rules Inspector

Правила для распознавания красивых ссылок (ЧПУ) в WordPress хранятся в одной из опций таблицы wp_options, представляя собой набор регулярных выражений. Если вы разрабатываете плагин, добавляющий дополнительные типы записей, таксономии или просто работающий со ссылками, то Rewrite Rules Inspector позволит разобраться с тем, какие правила (паттерны) уже установлены и на каком месте очереди окажутся ваши собственные.

Плагин Rewrite Rules Inspector

Плагин Rewrite Rules Inspector

В поле Match URL можно проверить URL, увидев к каким паттернам он подходит. Кнопка Flush Rules запускает процесс регенерации, а Download экспортирует все в TXT-файл в формате PHP-массива.

9. Log Viewer

Просмотр логов WordPress через плагин Log Viewer

Просмотр логов WordPress через плагин Log Viewer

Просматривайте любые файлы с логами через административный интерфейс WordPress. Для работы плагина необходимо быть администратором (или суперадминистратором, если у вас мультисайт). Константа DISALLOW_FILE_EDIT должна быть «выключена» (false или не установлена вообще). Кстати, просматривать лог-файлы удобно и через системное приложение Console в составе OS X.

10. User Switching

Для переключения между аккаунтами с разными правами не обязательно держать открытыми сотню браузеров при разработке. Плагин User Switching добавляет ссылку-переключатель на странице пользователей и в один клик вы сможете увидеть сайт от имени другого аккаунта. Вернуться обратно можно также просто из менюбара WordPress.

Работа с плагином User Switching

Работа с плагином User Switching

Смотрите также Быстрая смена пользователя в WordPress с помощью плагина User Switching.

11. Monster Widget

После активации плагина Monster Widget в списке доступных виджетов появится новый виджет под названием Monster. Он включает в себя вывод сразу всех виджетов, которые по умолчанию доступны в ядре WordPress. Разрабатывая очередную тему теперь не придется мучаться перетаскивая десяток виджетов по нескольким сайдбарам.

12. Regenerate Thumbnails

Плагин Regenerate Thumbnails позволяет выполнить регенерацию миниатюр изображений, загруженных в медиафайлы WordPress, и, в отличие от WP CLI, сделать это можно через графический интерфейс.

Плагин Regenerate Thumbnails

Плагин Regenerate Thumbnails

Смотрите также Как обновить размеры миниатюр в WordPress с помощью Regenerate Thumbnails.

13. WordPress Beta Tester

Плагин WordPress Beta Tester

Плагин WordPress Beta Tester

Если работоспособность вашего сайта критически важна и простои недопустимы, перед каждым обновлением ядра рекомендуется проводить тестирование плагинов и тем на копии сайта для разработки. Плагин WordPress Beta Tester позволяет устанавливать бета-версии (ночные сборки) WordPress и проверить совместимость плагинов и тем с новой версией заранее, еще до официального выхода.

Заключение

Все вышеописанные плагины и дополнения — полезные инструменты, которые экономят время, позволяют лучше понимать суть вещей, находить уязвимости и медленные участки кода.

Важно отметить, что большинство вышеприведенных инструментов стоит использовать лишь на тестовых сайтах. Многие из них сильно снижают производительность и могут нарушить безопасность. Инструкции по настройке и использованию плагинов, как правило, приведены в описании на WordPress.org.

Приглашаем читателей поделиться своим опытом и инструментами, которые вы используете для разработки проектов.

Подписаться на рассылку

Подписаться → Подпишитесь на бесплатную рассылку журнала WP Magazine и получайте новости, события, подборки тем и плагинов, уроки, советы и многое другое в мире WordPress!

  • artemweb

    Отличная подборка, кое что уже давно использую, а о некоторых впервые слышу. Большое спасибо.
    Если можно, обновите пожалуйста видео и презентации с WordPress Meetup. Спасибо.

    • А вроде Константин говорил, что на миитапах не записывают видео. Хотя сам лично не знаю, ждем авторитеное мнение организаторов :)

    • Видео не записываем по ряду причин, главная из которых то, что выступающие часто первый раз перед публикой, а камера в лицо этому не помогает :) Зато с конференции WordCamp все доклады профессионально записаны. Слайды по возможности выкладываем.

  • Из личного опыта могу сказать, что дебаг через sublime text — ад, потому что нету графических кнопок с помощью которых можно было бы гонять код. Постоянно лезть в меню сильно тормозит процесс и нервирует.

    • Sublime хорош. А для дебага попробуй PhpStorm.

      • Спасибо. Да, мне нравится саблайм из-за своей легкости и скорости. Правда вот не все плагины работают в 3 версии и приходится между 2 и 3 щелкаться или вручную устанавливать. Но графическая панелька с кнопочками явно бы не помешала. Может я просто не нашел такой плагин с кнопочками?

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

        • Я сам 90% времени на sublime text 3 сижу, даже лицензия есть :-) До этого на 2-й сидел, с обновлением до 3-й проблемы не было. Все плагины работают нормально. Но процесс дебага намного удобнее в полноценной IDE.

          ЗЫ. С какими плагинами проблемы?

          • Уже не вспомню на какой версии что именно не ставилось но были следующие проблемы.

            1. Не мог установить менеджер пакетов через консоль (на гитхабе вроде уже открытый баг на эту тему есть).
            2. Не смог установить Xdebug Client (на 2 или 3 версию он не идет).
            3. Не смог установить плагин, для переключения цветовых тем прямо в редакторе (Colorsublime plugin).

            Все настройки Саблайма как минимум странные. Шесть уровней вложенности в меню это явно не образцовый интерфейс https://yadi.sk/i/wzeuZLXHg3Da5 :)

    • А горячих клавиш нет? :)

      • Есть, но их сложно запомнить и нажимать (их штук 10 и они какие-то неинтуитивные).
        Например, cmd+F9. Одной рукой тяжело нажимать. И поскольку тут Mac OS, то надо еще Fn зажимать, чтобы F9 сработала. Это точно уже двумя руками надо :)

  • Кстати, поставить wp cli можно и без использования root-доступа, как предлагают на официальном сайте.
    1. В домашней папке своего пользователя сделать директорию bin.
    2. Закинуть туда файл wp и выставить права на запуск.
    3. nano -w .bashrc и пишем export PATH=$HOME/bin:$PATH в самый конец.
    4. Далее заново логинимся по SSH и можно использовать wp cli.

  • versusbassz

    Post Meta Inspector — просмотр мета-полей записей (очень рекомендую, удобная штука)
    https://wordpress.org/plugins/post-meta-inspector/

    Duplicate Post — возможность копировать записи (использую для «дешёвой» генерации контента)
    https://wordpress.org/plugins/duplicate-post/

    WP Crontrol — инструмент помощнее для работы с WordPress Cron
    https://wordpress.org/plugins/wp-crontrol/

    HH sortable ID columns — добавляет колонку ID в списки сущностей в админке
    https://wordpress.org/plugins/hh-sortable/

    • А что такого в Post Meta Inspector? Я поставил себе и вроде он тоже самое, что и сам Вордпресс по умолчанию показывает с той лишь разницей, что здесь абсолютно все postmeta отображаются. Но отображаются так же в виде строчек. Даже если внутри массив.

      А я для Крона все тот же wp cli использую, дабы на сайте меньше плагинов стояло — меньше кода, меньше потенциальных дыр))

      • versusbassz

        > А что такого в Post Meta Inspector? Я поставил себе и вроде он тоже самое, что и сам Вордпресс по умолчанию показывает с той лишь разницей, что здесь абсолютно все postmeta отображаются.

        В том и дело что отображаются все. Мне удобно. Для пользователей, которым оно не надо, отключаю его в коде.

        > А я для Крона все тот же wp cli использую, дабы на сайте меньше плагинов стояло — меньше кода, меньше потенциальных дыр))

        Это по вкусу. Иной раз лазить в wp-cli лень, а тут всё в админке под рукой.

        • Ясно-понятно :)

          Мне удобно. Для пользователей, которым оно не надо, отключаю его в коде.

          Главное не забыть не только metabox спрятать, а еще и обработчики для сохранения убрать. Много раз уже в интернете видел «защиту» от того, чтобы какой-то блок от пользователей спрятать, где display:none; пишут для какого-нибудь блока. В лучшем случае пишут лишь remove_meta_box :)

          • versusbassz

            > Главное не забыть не только metabox спрятать, а еще и обработчики для сохранения убрать.

            Да, через remove_meta_box прячу. Post meta inspector только показывает, п.э. этого достаточно.

  • Александр Коваль

    Duplicator — «клонирование» сайта: мне удобно, если надо быстро переместить весь сайт на другой хостинг — https://wordpress.org/plugins/duplicator/

  • versusbassz

    https://sypex.net/ru/
    производительный дампер БД (web-интефейс)

    • Спасибо, но уже научился пользоваться mysqldump :) как по мне — лучший инструмент

  • От себя добавлю не слишком хардкорных, но всё же:

    Codepress Admin Columns – управление колонками списков сущностей. Можно добавлять миниатюры, произвольные поля и всё такое
    https://wordpress.org/plugins/codepress-admin-columns/

    Page Builder by SiteOrigin – позволяет в любом месте устроить модульную сетку, виджеты, короче – любую анархию, что в голову взбредёт. Посадочные страницы, красивые страницы контактов, вот это всё. Это – лучшее, что я видел для WP за всё время работы с ним.
    https://wordpress.org/plugins/siteorigin-panels/

    • А что внутри у Page Builder? Как он все это дело хранит? Думаю тоже, что иногда неплохо бы сеточку в админке набрасывать, но все, что видел ранее — такой ад внутри кода и настолько тяжело что-то сделать там, что проще страницы ручками верстать. И любой пейдж билдер приходится выбрасывать в помойку как только появляется очередная «фишечка», которой ранее не было в нем и чтобы ее реализовать надо с ума сойти — а обычный page-ID.php взял да заверстал :)

      • Я на нём sib-ksi.ru запилил, работает весьма прилично. Код не избыточный, я сам примерно такой же бы наверстал. Попробуй, поиграйся.
        Я пробовал несколько подобных, уже и не вспомню всех – и оставил этот. Для рядовых сайтов самое то. Да там даже цикл записей произвольного типа можно вызывать, что уж :)

        • Классно выглядит! Код именно PHP интересует. Т. е. внутри самого плагина. Как и в каком формате все это хранится, например. Думал может какой инсайд сразу расскажешь :)

          Верстку я уже посмотрел и мне не очень понравилось, что генерируется CSS прямо на странице (не люблю инлайн CSS, потому как чего править, то боль, особенно когда один контент на 10 страницах). Также слишком много настроек прямо в админке (уже поставил, немного поигрался), но, как я понял по документации, эти излишества можно убрать. Т е суровый кастомизатор это клево, но в итоге с ним будут работать люди далекие от HTML и CSS, поэтому им лучше заготовить определенный набор приемов, чтобы в шаблоны можно было только текст вбивать.

          Так же хочется сетку от бутсрапа, а не такое разнообразие с колонками и их шириной, которую можно ручками менять.

          В любом случае — плагин интересная находка, буду еще копаться в нем обязательно.

          А вот почему спросил про то, как оно хранится. Как я понимаю, если текст страницы будет храниться не в post_content, а в meta, то как минимум поиск не будет работать по сайту встроенный, возможно и другие проблемы (?).

          Я пока некоторые легкие вещи через шорткоды делаю, например вот такие цитаты http://fashioninside.by/about/guide/shortcodes/wide-quote/ (в самом низу крутой пример с фоткой на фоне — все резиновое). Как минус шорткодов — невозможность использовать блочные элементы вроде h1 p внутри шорткода. Т е вот в тексте цитаты может быть только текст с легким форматированием (выделение жирным, ссылка и т. п.).

          • Большинство текста твоего ответа из-за того, что ты не словил основного: вся страница управляется только через UI, в чём и сама цель что Page Builder, что самого WordPress.

            Inline style по той же причине: такие стили применяются только лишь целевым элементам, и нет смысла вешать их на отдельные выборки.

            > Так же хочется сетку от бутсрапа, а не такое разнообразие с колонками и их шириной, которую можно ручками менять.

            Сетка процентами – это тоже особенность, потому что замысел расширения в полной свободе действий в рамках UI, если я всё правильно понял.

            > если текст страницы будет храниться не в post_content, а в meta…

            Тело записи хранится на месте, расширение только добавляет дополнительную разметку, как если бы ты писал не в визуальном редакторе, а в режиме кода. В дополнительные поля, может, что и пишется, но вряд ли важное.

            > Думал может какой инсайд сразу расскажешь :)

            Не забудь поставить расширения SiteOrigin Widgets Bundle – кучка виджетов не помешает ;)

            > не люблю инлайн CSS, потому как чего править, то боль, особенно когда один контент на 10 страницах

            Это вопрос уже к тебе ;) загоняй всё в единые рамки, делай общие классы-помощники, заворачивай одинаковые куски в shortcode’ы (ShortCodes UI) и так далее.

            > в итоге с ним будут работать люди далекие от HTML и CSS

            Затем и нужен Page Builder.

            > Я пока некоторые легкие вещи через шорткоды делаю

            Я раньше так же извращался, но потом понял, что это задача скорее для виджетов.

          • Большинство текста твоего ответа из-за того, что ты не словил основного: вся страница управляется только через UI, в чём и сама цель что Page Builder, что самого WordPress.

            Может быть :) Но, как по мне, надо разделять дизайн и контент. Это как в коде отделена логика от шаблона, так и на самом сайте — WordPress управляент контентом, а не дизайном, потому что дизайн делается дизайнером в фотошопе, а не авторами сайта. Но, все это можно отбросить в сторону и вспомнить о главном — что мы собственно делаем. Я про себя держу в голове сайт с публикациями, где есть 100 авторов и каждый пишет свои интересные статьи. У такого «издания» должна быть общая стилистика, как у газеты, поэтому нужно заранее иметь несколько шаблонов, которые смогут наполнять. Если речь про сайт о компании, то, да, наверное нужен сайт-конструктор :)

            Inline style по той же причине: такие стили применяются только лишь целевым элементам, и нет смысла вешать их на отдельные выборки.

            Не совсем понял, но вот реальная ситуация с которой я сталкивался — табличка с ценами на нескольких страницах. Причем получилось так, что дизайн «допиливался» вот в таком вот визуальном редакторе. И когда надо что-то поменять, то менять надо на 3-х страницах постоянно, а не в одном месте :) В случае если дизайн не делается на сайте, проблема только с контентом.

            Это вопрос уже к тебе ;) загоняй всё в единые рамки, делай общие классы-помощники, заворачивай одинаковые куски в shortcode’ы (ShortCodes UI) и так далее.

            Это я к тому говорил, что в пейдж билдере можно цвет фона ставить и тексты «украшать».

            Я раньше так же извращался, но потом понял, что это задача скорее для виджетов.

            Вот, кстати, виджеты хранятся в wp_options. В случае, если у нас сайт с миллионом статей, содержимое таких цитат нужно в post_content или post_meta хранить. Хотя «виджеты» в пейдж билдере вроде как раз в post_content содержимое сохраняют.

          • Про журнал скажу вот что: один человек пишет, другой оформляет. Это вроде как так происходит. В рамках WP – ничем не иначе.

            И когда надо что-то поменять, то менять надо на 3-х страницах постоянно, а не в одном месте

            Это как раз дело для заворачивания в shortcode.

            Это я к тому говорил, что в пейдж билдере можно цвет фона ставить и тексты «украшать».

            Да, и заниматься этим должен тот, кто может хорошо.

  • Здравствуйте, я слышал, что на данный момент WP не принимает темы с theme option, только с customizer? Интересно, так ли это?

  • VIZAVI

    Здравствуйте! Я не разработчик сайтов на WordPress, но с удовольствием прочитал эту статью, как впрочем и многие другие в WP Magazine, каждая из которых по-своему интересна и актуальна! Но она заставила меня серьёзно задуматься о том, насколько возможно и возможно ли вообще самостоятельно (но конечно же не без помощи спецов и профи) создать свой собственный профессиональный сайт для Рунета, на своём домене, на этой популярной платформе (WordPress.org) и потом управлять им, не являясь при этом спецом в этой области и тем более программистом. Честно сказать, эта статья подкрепила мои опасения относительно технической сложности всего этого процесса и постоянных значительных материальных затрат на оплату необходимых услуг грамотных специалистов!
    В связи с чем будьте добры, подскажите, пожалуйста, насколько реальна и реальна ли вообще моя затея?

    • Реальна :) самое главное разобраться в том, как все установить, привязать домен и т.д., к тому же большинство хостинг-провайдеров позволяют это сделать в один клик через интерфейс, а дальше экспериментируйте, ошибайтесь, учитесь, и не забывайте делать бэкапы.

      • VIZAVI

        Константин, спасибо за Ваш оперативный ответ и вдохновляющий авторитетный совет!:)