Отладка, диагностика и решение проблем

Обзор

При использовании функционала Advanced Custom Fields вы можете столкнутся с некоторыми проблемами. Эти проблемы могут быть в виде пустой белой страницы, страницы с ошибками, не отображаемое значение или отчет об ошибке. Но не стоит поддаваться панике раньше времени, сами по себе ошибки являются хорошей обратной связью и могут помочь сами себя устранить. Процесс устранения ошибок и отлова багов называется отладка.

Диагностика ошибок

Самое первое, что нужно сделать при диагностики любой проблемы с кодом — включить отчет об ошибках. Эти знания пригодятся тем, кто любит писать на форумах «У меня не отображаются ошибки в WordPress! Что делать?».

Чтобы включить отчет об ошибках нужно найти в файле wp-config.php следующую строчку.

/**
 * Для разработчиков: Режим отладки WordPress.
 *
 * Измените это значение на true, чтобы включить отображение уведомлений при разработке.
 * Разработчикам плагинов и тем настоятельно рекомендуется использовать WP_DEBUG
 * в своём рабочем окружении.
 * 
 * Информацию о других отладочных константах можно найти в Кодексе.
 *
 * @link https://codex.wordpress.org/Debugging_in_WordPress
 */
define('WP_DEBUG', false);

По-умолчанию, WP_DEBUG выключен, но для того чтобы использовать потенциал PHP в выявлении ошибок вам нужно включить его. Это делается установкой значения в true.

define('WP_DEBUG', true);

Теперь, когда показ ошибок включен перезагрузите проблемную страницу и ищите любые PHP ошибки. Каждая ошибка PHP будет содержать тип ошибки, файл, который вызвал ошибку, и номер строки, в которой произошла ошибка. Если вы видите ошибки PHP, используйте эту информацию для устранения ошибки.

Вы можете обнаружить, что ошибка указывает на строку кода в вашей теме или, возможно, у вас есть участок кода, который не корректно выполняет свою задачу (например, вывод изображения). Вот мы и узнали откуда растут корни нашей проблемы. Пришло время отладить данные!

Отладка данных

Вероятно, проблема, которая вам мешает заключается во взаимодействии с данными ACF. Поэтому важно проверить в каком формате возвращаются данные. Для этого пригодится функция var_dump().

var_dump() — это встроенная функция PHP, которая выводит структурированную, удобную для восприятия информацию об одной (или более) переменных. Это особенно полезно для массивов и объектов, т.к. var_dump() отображает информацию рекурсивно, давая лучшее понимание того, что происходит в переменной. Ниже пример использования var_dump() на деле:

<?php 

$image = get_field('image');

echo '<pre>';
	var_dump( $image );
echo '</pre>';

?>

Обратите внимание, что в приведенном выше коде также используется тег pre, чтобы правильно визуализировать разрывы строк и отображать массив или объект в более понятном для человека формате.

Теперь, когда вы можете видеть данные, с которыми взаимодействует ваша тема можно определить, где находится проблема. Возможно, вы ожидали, что значение $ image будет строкой, содержащей URL-адрес, но после проверки значение оказалось, что это, содержащий множество данных.

Ошибки JavaScript

Большая часть плагина ACF использует JS для добавления интерактивности элементам. Например, нажатие на кнопку «Выбрать изображение» в поле изображения запустит всплывающее окно. Если элемент не реагирует на нажатие, скорее всего, существует ошибка JS на странице и тем самым она препятствует запуску JS скрипта ACF.

Отладка JS довольно проста. Откройте журнал консоли (через инструменты разработчика вашего браузера) и перезагрузите страницу. Открыв консольный журнал, найдите ошибки, которые могут возникать при загрузке страницы или при взаимодействии с элементами. Если появляется конфликт, вызванный ACF, то стоит написать тикет в нашу службу поддержки.

Ошибка может указывать на 1 строку минифицированного JS файла. Гораздо удобнее отлавливать ошибки в обычном, не сжатом варианте JS файла. Чтобы сделать это добавьте строчку в wp-config.php.

define('SCRIPT_DEBUG', true);

Эта строка кода попросит WP загружать полные версии каждого JS-скрипта.

Решение проблем

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

Если вам не удалось решить проблему самим, то можно обратиться в службу поддержки. Наличие отладочной информации значительно сократит время ответа!