Как отлаживать плагин WordPress?
Недавно я унаследовал плагин WordPress, в котором есть несколько ошибок. Моя проблема в том, что я тоже новичок в WordPress, и я не знаю, как записывать отладочные сообщения, чтобы я мог понять, что происходит.
Мне действительно нужен способ создать всплывающее окно или войти в консоль.
Ответы
Ответ 1
Там это отличное Q & A в WordPress Stack Exchange, много знающих людей, объясняющих их методы отладки: как вы отлаживаете плагины?
На арене Javascript вам в основном нужен <script>console.log('the value is' + variable);</script>
. И используйте инспектор Google Chrome и/или Firebug.
В PHP это зависит от того, где происходит ситуация или где вы хотите получить результат.
Официальная документация в Кодексе.
Пример wp-config.php
для отладки
// Enable WP_DEBUG mode
define( 'WP_DEBUG', true );
// Enable Debug logging to the /wp-content/debug.log file
define( 'WP_DEBUG_LOG', true );
// Disable display of errors and warnings
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );
// Use dev versions of core JS and CSS files (only needed if you are modifying these core files)
define( 'SCRIPT_DEBUG', true );
Печать информации в файл журнала
Следующее использует системный путь OSX/Unix/Linux, настраивается для Windows.
/* Log to File
* Description: Log into system php error log, usefull for Ajax and stuff that FirePHP doesn't catch
*/
function my_log_file( $msg, $name = '' )
{
// Print the name of the calling function if $name is left empty
$trace=debug_backtrace();
$name = ( '' == $name ) ? $trace[1]['function'] : $name;
$error_dir = '/Applications/MAMP/logs/php_error.log';
$msg = print_r( $msg, true );
$log = $name . " | " . $msg . "\n";
error_log( $log, 3, $error_dir );
}
Затем в вашем коде вызывается функция my_log_file( $post, 'The post contents are:' );
Печать непосредственно в отображаемом Html
/* Echo variable
* Description: Uses <pre> and print_r to display a variable in formated fashion
*/
function echo_log( $what )
{
echo '<pre>'.print_r( $what, true ).'</pre>';
}
И везде, где это необходимо, используйте его: echo_log( $post );
,
Это расширение будет регистрировать информацию непосредственно в консоли браузера. См. Следующие вопросы и ответы в WordPress Ответы: Как использовать расширение WP-FirePHP? ,
Ответ 2
- Не разрабатывайте без отладки!
- Прочтите это, пожалуйста: http://wp.smashingmagazine.com/2011/03/08/ten-things-every-wordpress-plugin-developer-should-know/
Удачи, и вы можете держать нас в курсе.
Ответ 3
Общая стратегия отладки PHP заключается в использовании операторов print_r( $var )
и обновлении страницы. Простой и легкий. Если вы хотите войти в код, то Xdebug - это то, что вы хотите установить.
Ответ 4
В соответствии с ваш комментарий, где вы Much rather use a system where debug messages can be turned off and on in one place
:
Это можно сделать в WordPress. Существует константа, называемая WP_DEBUG
, которую вы можете установить в true
или false
из вашего файла wp-config.php
в папке WordPress (этот файл, в который вы добавляете параметры базы данных
).
Итак, вы можете использовать:
if( WP_DEBUG ){
echo "<script> alert('Hello World!'); </script>";
}
Предупреждение будет отображаться только в том случае, если WP_DEBUG установлен на true
(например, в версии разработки веб-сайта, например, на вашем локальном хосте), пока он не будет отображаться на вашей производственной версии веб-сайта (вам просто нужно установите WP_DEBUG
на false).
Ответ 5
Используя Visual Studio и расширитель расширений php от разработчика, вы можете отлаживать его шаг за шагом, а не регистрировать их и пытаться выяснить значения переменных во время выполнения. Могут быть и другие альтернативы.
PS: Это не бесплатно: (
Ответ 6
Я знаю, что мой ответ наступает через несколько лет после первоначального вопроса, но, поскольку у меня недавно была такая же точная проблема и до сих пор не удалось найти удовлетворительное решение, я закодировал для этого плагин.
В нем конкретно рассматривается потребность ОП:
Мне просто нужен способ создать всплывающее окно или войти в консоль.
Надеюсь, он поможет всем разработчикам плагинов/тем, кто ищет быстрый и простой способ отладки своего кода https://wordpress.org/plugins/bugfu-console-debugger
Просто установите его и вызовите метод ведения журнала из вашего PHP-кода, чтобы напрямую войти в консоль JavaScript браузера.
BugFu::log($your_string-array-object);