Обзор
При использовании функционала 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-скрипта.
Решение проблем
Теперь, когда вы можете видеть данные, взгляните на код, который взаимодействует с ними. Если решение не очевидно вначале, проведите несколько минут, чтобы исследовать проблему, выполнив поиск типа переменной (массив, объект и т. д.), функции, которые вы используете и других ошибок в вашем коде. Вы также можете найти решение в часто задаваемых вопросах.
Если вам не удалось решить проблему самим, то можно обратиться в службу поддержки. Наличие отладочной информации значительно сократит время ответа!