Подтвердить что ты не робот

Как отлаживать плагин WordPress?

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

Мне действительно нужен способ создать всплывающее окно или войти в консоль.

4b9b3361

Ответ 1

Там это отличное Q & A в WordPress Stack Exchange, много знающих людей, объясняющих их методы отладки: как вы отлаживаете плагины?

На арене Javascript вам в основном нужен <script>console.log('the value is' + variable);</script>. И используйте инспектор Google Chrome и/или Firebug.

В PHP это зависит от того, где происходит ситуация или где вы хотите получить результат.


Отладка в WordPress

Официальная документация в Кодексе.

Пример 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 ); ,


FirePHP

Это расширение будет регистрировать информацию непосредственно в консоли браузера. См. Следующие вопросы и ответы в WordPress Ответы: Как использовать расширение WP-FirePHP? ,

Ответ 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);