Отладка WordPress: Основное руководство
Опубликовано: 2021-02-11Независимо от того, на каком уровне вы являетесь разработчиком WordPress, вы постоянно будете сталкиваться с одной проблемой: ошибками. Даже самые опытные разработчики не могут последовательно кодировать так, чтобы не было ошибок. Фактически, отладка WordPress может помочь вам узнать о платформе еще больше!
Если у вас есть предыдущий опыт программирования, скорее всего, у вас были ошибки при компиляции или во время выполнения. Если вы не бросили полотенце и не выбросили проект, скорее всего, вы потратили некоторое время на просмотр кода и отслеживание проблемы. Динамика с WordPress такая же.
В отличие от того, когда вы программируете на общем языке программирования, ошибки WordPress не просто распечатываются на странице. Это связано с тем, что журналы отладки часто содержат конфиденциальную информацию, например учетные данные для баз данных. Вместо этого WordPress будет помещать эти журналы в файлы на вашем сервере, недоступные для публики.
К счастью, в отличие от компьютеров, разработанных армией США, которые весили тридцать тонн, вам не придется буквально удалять мертвые ошибки со своей машины, чтобы добиться этого! Теперь, когда у нас есть некоторый контекст, давайте более технический взгляд на то, что входит в процесс отладки WordPress.
Объяснение отладки WordPress
Как вы, наверное, знаете, WordPress разработан с использованием PHP. Это означает, что официальное руководство по отладке WordPress, а также официальное руководство по отладке PHP будут отличными ресурсами, которые помогут вам на этом пути.
Чтобы отлаживать вообще, WordPress требует, чтобы у вас была определена глобальная переменная PHP. Мы подробно рассмотрим, как это сделать в следующем разделе.
Важно различать, чем процесс отладки PHP отличается от процесса отладки WordPress. В обычном PHP по умолчанию отображаются только два типа ошибок. Одна из них - «фатальная ошибка», то есть настолько серьезная, что страница не может даже загрузиться. Другой - просто показывает пользователю пустую страницу, если есть «критическая фатальная ошибка». Другими словами, PHP знает, что печать полного сообщения об ошибке может представлять угрозу безопасности. Эти настройки можно легко изменить в самом PHP.
WordPress, с другой стороны, немного многословен, когда дело доходит до отладки. Если вы просто включите отладку WordPress и не настраиваете ее, будут отображаться все уровни ошибок, предупреждений и даже информационные элементы для разработчиков. Это означает, что будет показано все, от фатальных ошибок до технического сообщения о том, как вам следует оптимизировать раздел JavaScript. Хотя это чрезвычайно полезно для разработчиков, вероятно, это не лучший контент для показа пользователям.
Еще одна уникальная особенность заключается в том, что вы будете получать уведомления о специфичных для WordPress функциях PHP, которые устарели. Функции, которые устарели, могут работать и сейчас, но в будущем их поддержка прекратится. Это также обычно означает, что есть лучший и более быстрый способ выполнить тот же процесс.
Мы знаем, что вы, вероятно, не в восторге от отладки WordPress, но это очень важно, если вы хотите поддерживать работоспособный блог или сайт. Однако, прежде чем вы начнете редактировать файлы, обязательно сначала используйте надежный плагин резервного копирования WordPress. Таким образом, если вы случайно сделаете свой сайт неработоспособным, вы сможете восстановить все всего за несколько кликов!
А теперь давайте посмотрим, как мы можем начать работать!
Как включить отладку в WordPress?
Чтобы начать процесс отладки WordPress, нам понадобится пара строк PHP.
Запустите свой любимый текстовый редактор (если ваш любимый текстовый редактор не является Блокнотом Windows!). Если вам нужно его взять, Notepad ++ - это широко используемый текстовый редактор с открытым исходным кодом, который поддерживает почти все языки программирования.
Затем загрузите копию вашего файла wp-config.php. Не редактируйте исходный файл! Мы просто загрузим измененную версию, как только закончим.
После того, как вы открыли wp-config.php в текстовом редакторе, вам нужно будет добавить следующую строку кода. Во-первых, найдите его, чтобы убедиться, что у вас его еще нет; PHP становится очень неприятным, если вы определяете одну и ту же переменную дважды!
define( 'WP_DEBUG', true );
Вся эта строка кода устанавливает для глобальной переменной PHP с именем WP_DEBUG логическое значение true.
Точно так же, если вы хотите , чтобы включить WordPress отладки функция отключена, вы бы просто положить в противоположную строку кода:
define( 'WP_DEBUG', false );
Это включает отладку, но это не очень помогает, если мы не знаем, как найти выводимую информацию!
Где находится журнал отладки WordPress?
Технически на этот вопрос есть два ответа, и точный ответ зависит от вашего выбора.
Как мы уже говорили, один из способов - просто добавить define ('WP_DEBUG', true) ;. При этом используются настройки журнала отладки WordPress по умолчанию, которые автоматически создают файл, если он не существует (или добавляет к нему, если он существует) в расположении wp-content / debug.log.
Однако есть несколько причин, по которым вы можете захотеть разместить его в другом месте. Например, вы можете разместить его там, где к нему может получить доступ сторонний инструмент отладки. Чтобы настроить место для журнала отладки, вы можете включить отладку следующим образом:
define( 'WP_DEBUG_LOG', '/best-wp-dev/errors.log' );
Объяснение журнала отладки WordPress
Уровень детализации информации в вашем журнале отладки WordPress зависит от того, как вы его настраиваете. Если вы просто включите его без каких-либо дополнительных изменений, вы будете регистрировать практически каждое событие, которое вызывает ошибку, использует устаревшую функцию или не является оптимальным.
Поскольку WordPress построен на основе PHP, в вашем журнале будут отображаться все выданные ошибки и предупреждения PHP. Он также будет содержать дату, время и IP-адрес, связанный с каждым событием. К сожалению, вы также увидите (очень) подробный вывод PHP о многих вещах, таких как стиль кода, который ему не нравится, проверка данных, которую, по его мнению, следует усилить, и многое другое.
Особенно для людей, только начинающих отлаживать WordPress, просмотр файла журнала может быть довольно утомительным. Однако вы должны помнить, что необходимо всего несколько вещей.
Отладка и ведение журнала
Хотя они нацелены на достижение одной и той же цели, важно, чтобы вы понимали разницу между отладкой и ведением журнала. Другими словами, строка define ('WP_DEBUG', true); делает что-то совершенно отличное от строки define ('WP_DEBUG_LOG', true) ;.
Ни в коем случае нельзя использовать define ('WP_DEBUG', true); на общедоступном сайте. Эта команда, когда используется сама по себе, просто выводит отладочные сообщения. Он ничего не регистрирует и выводит информацию, которая может быть использована для кражи данных с вашего сайта (ов). Обеспечение того, что это не включено, в сочетании с надежным плагином безопасности WordPress предотвратит подавляющее большинство попыток кибератак.
Отладка WordPress без риска для безопасности
Очевидно, вам нужно будет регулярно отлаживать свой сайт. Однако вы, вероятно, не захотите постоянно добавлять и удалять строки кода из файла wp-config.php.
Продумывая процесс, нам сначала нужно включить отладку в целом. Затем нам нужно убедиться, что мы регистрируем ошибки, чтобы их можно было исправить. Однако мы не хотим показывать эти ошибки широкой публике. Помните, что нам нужно подавить отображение как стандартных ошибок PHP, так и ошибок, специфичных для WordPress.
Пример безопасного кода отладки WordPress
Используя описанный выше процесс, вот четыре строки кода, которые помогут вам начать безопасную отладку вашего сайта!
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false ); @ini_set( 'display_errors', 0 );
Первые три строки выше просто устанавливают глобальные переменные PHP, на которые обращает внимание WordPress. Мы делаем возможным отладку, настраиваем функцию ведения журнала, а затем отключаем специфичные для WordPress ошибки.
Скорее всего, четвертая строка выглядит так, как будто она вышла из левого поля! Эта строка предназначена для устранения ошибок PHP, которые не обрабатываются WordPress. Это последняя база, которую нужно прикрыть, чтобы злоумышленники не получили доступ к конфиденциальной информации сайта.
Как исправить ошибку отладки WordPress?
Довольно часто разработчики будут использовать те четыре строки кода, которые мы рассмотрели. Они столкнутся с ошибкой, например с ошибкой подключения к базе данных, но в журнале отладки ничего не будет об этом. Это связано с тем, что WordPress имеет разные глобальные переменные PHP для разных методов отладки.
Давайте рассмотрим несколько сценариев, в которых вам нужно добавить еще несколько строк в файл wp-config.php для правильной отладки WordPress.

Отладка WordPress JavaScript
Если у вас есть сайт WordPress, очень высока вероятность, что он использует JavaScript. Для начинающих разработчиков это, по сути, язык, на котором базируются интерактивные элементы сайтов. JavaScript известен своей утомительной отладкой. Это связано с тем, что современные сайты часто используют фреймворки поверх JavaScript, что еще больше усложняет предупреждения и сообщения об ошибках.
К сожалению, это не единственное, что затрудняет отладку WordPress JavaScript. Есть две основные формы JavaScript: асинхронный, или «AJAX», и обычный JavaScript. Обычный JavaScript работает линейно; он не будет запускать одну функцию до тех пор, пока не выполнит ту, которая еще не завершилась. Хотя это могло сработать в первые дни Интернета, это не годится для веб-приложений.
С другой стороны, AJAX работает на вашем сайте WordPress в фоновом режиме. Он позволяет запускать функции JavaScript и ждать их вывода, но не препятствует запуску других функций. Часто необходимо предотвратить блокировку сайтов.
Причина, по которой WordPress заставляет нас использовать другую глобальную переменную PHP, чтобы сказать, что мы хотим отлаживать скрипты, заключается в том, что этот метод отладки выводит огромное количество данных.Причина, по которой WordPress заставляет нас использовать другую глобальную переменную PHP, чтобы сказать, что мы хотим отлаживать скрипты, заключается в том, что этот метод отладки выводит огромное количество данных. Это еще и потому, что JavaScript и CSS работают на стороне клиента, а PHP - на стороне сервера. Чтобы вывести каждую ошибку, с которой WordPress сталкивается из-за JavaScript и CSS, просто добавьте эту строку:
define( 'SCRIPT_DEBUG', true);
Это покажет ошибки как JavaScript, так и CSS (таблицы стилей). Это также может помочь с более сложными операциями AJAX.
Устранение проблем с данными
Почти каждый веб-сайт получает информацию из базы данных. WordPress имеет несколько баз данных; некоторые сайты хранят базы данных на отдельных серверах, а некоторые хранят их на одном сервере. Поскольку все конфигурации разные, всегда есть шанс, что что-то пойдет не так с вашим подключением к базе данных.
Если вы получаете сообщение об ошибке, в котором говорится, что WordPress не может подключиться к базе данных, или вы замечаете, что данные извлекаются неправильно, вам, вероятно, потребуется отладка. Просто используя стандартные переменные отладки WordPress, вы, вероятно, заметите, что при обнаружении ошибки, связанной с базой данных, ничего не будет регистрироваться.
Это связано с тем, что WordPress разделяет ошибки, связанные с базой данных, от всех других ошибок. Сообщения об ошибках базы данных часто содержат конфиденциальную информацию, и разработчики WordPress хотели убедиться, что вы случайно не разгласите личную информацию общественности!
Чтобы начать отладку проблем с базой данных WordPress, вам нужно будет добавить еще одну строку в ваш файл wp-config.php:
define( 'SAVEQUERIES', true );
Погружение в отладку базы данных
В отличие от других наших глобальных переменных отладки WordPress, нам нужно уделить особое внимание этой. «SAVEQUERIES» сообщает WordPress, что мы хотим видеть каждый выполненный запрос и возвращаемые результаты. Это существенно снизит производительность в целом! Будьте осторожны, не запускайте это на своем сервере в часы пик и выключайте, как только он вам не понадобится.
Он также немного по-другому хранит свой вывод. WordPress использует массив строк PHP, к которым вам потребуется доступ, чтобы увидеть информацию об отладке базы данных. Он находится в глобальной переменной PHP с именем $ wpdb и в массиве элементов, называемом запросами. Вы можете добраться до него, распечатав содержимое запросов $ wpdb->.
Отладка плагинов WordPress
Одним из основных преимуществ WordPress перед другими платформами является его богатая библиотека плагинов, которые могут делать что угодно. Возможно, вы читаете это и уже чувствуете головную боль, думая о логистике необходимости постоянного изменения содержимого файла. К счастью, некоторые плагины могут помочь нам в отладке WordPress! Есть два особенно популярных, которые делают это проще простого.
Отладка WP
Расположенный на сайте WordPress, это один из самых известных плагинов отладки WordPress. По сути, это автоматизирует процессы, о которых мы уже говорили. С помощью нескольких щелчков мышью на панели инструментов вы можете включать и выключать все эти глобальные переменные PHP на своем сайте.
При установке этого плагина вы также устанавливаете ряд плагинов, от которых он зависит. В целом они позволяют вам регистрировать и помогают интерпретировать ошибки, с которыми вы сталкиваетесь.
Этот инструмент отлично подходит для включения процесса отладки, но для того, чтобы отлаживать собственные плагины и легко просматривать отладочную информацию WordPress, связанную с базой данных, вам также понадобится другой плагин.
Панель отладки
Как следует из названия, панель отладки - это просто панель на панели администратора вашего сайта WordPress. Его можно использовать вместе с инструментом отладки WP.
В нем есть инструменты для более продвинутых разработчиков, позволяющие им просматривать кеш, выводимые запросы, результаты запросов и более подробную информацию. Как мы уже упоминали, WordPress помещает всю отладочную информацию базы данных в глобальную переменную PHP.
Чтобы действительно просмотреть эту информацию, вам нужно будет перебрать этот массив в настраиваемом файле PHP. Этот плагин дает вам простую альтернативу. Он распечатывает всю эту информацию для вас в формате, который довольно легко читать и понимать. Он даже дает вам несколько советов по оптимизации вызовов базы данных!
Отладка тем WordPress
Отладка тем WordPress обычно включает включение глобальной переменной PHP для скриптов. Это связано с тем, что в темах используются клиентские JavaScript и CSS.
Во-первых, убедитесь, что это тема, созданная вами. Если это сторонняя тема, в которой возникают проблемы, вам нужно обратиться к автору этой темы. Это было бы похоже на попытку найти иголку в стоге сена, чтобы сделать это самому!
Если это ваша собственная тема, просто убедитесь, что вы выполнили шаги, которые мы обсуждали, чтобы включить отладку. Выполните любое действие, которое заставит вас заметить ошибку. Вы также можете включить консоль разработчика в своем веб-браузере, нажав F12. Это показывает больше сообщений об ошибках на уровне клиента, которые могут помочь в процессе.
После выполнения действий над вашей темой, которые приводят к ошибкам, просмотрите журнал. Там должна быть подробная информация о причинах ошибок. Скорее всего, потребуется всего лишь несколько настроек JavaScript и / или CSS, чтобы вернуть все в нормальное состояние!
Критическая ошибка отладки WordPress
Если плагин, тема или другой пользовательский контент генерирует ошибку, приводящую к сбою вашего сайта WordPress, ваш сайт должен отправить вам электронное письмо о сбое. Это может быть неприятно, особенно для начинающих веб-мастеров.
Не о чем беспокоиться, так как вы можете просто выполнить эту цепочку шагов, чтобы решить проблему за очень короткое время!
- Убедитесь, что вы включили режим отладки WordPress.
- Получите доступ к журналу ошибок. Он должен содержать подробную информацию о фатальной ошибке. Если да, поищите точный код ошибки в Интернете.
- Проверьте свою версию PHP. Если это не то, что в настоящее время требует WordPress, простое обновление версии PHP, используемой вашим сервером, может решить проблему.
- Если вам все еще не повезло, просмотрите свои плагины. Выключите их все . Если сайт работает, значит, проблему вызвал плагин. Просматривайте их один за другим, пока не найдете проблемный плагин. Свяжитесь с тем, кто это написал, и попросите исправить это.
- Если вы все еще не нашли проблему, это может быть проблема, связанная с темой. Попробуйте вернуть текущую тему к теме WordPress по умолчанию. Если ваш сайт работает, вам необходимо временно изменить темы, пока автор не решит проблему.
- Нет кубиков? Сообщите о своей ошибке на форуме разработчиков WordPress. Есть много пользователей, которые будут рады вам помочь.
Заключение
Отладка WordPress может помочь вам решить ряд проблем, с которыми вы сталкиваетесь. Он может сказать вам, какие плагины имеют проблемы или какие у вас могут быть проблемы с темой. Как разработчик WordPress, отладка поможет вам не только стать лучшим разработчиком, но и создать чистый и качественный код.
AJ обладает более чем двадцатилетним опытом работы и разработки членских сайтов с широким кругом клиентов.
