最近我继承了一个WordPress插件,但它有一些bug。我的问题是我对WordPress不熟悉,不知道如何记录调试信息以便找出问题所在。
我只需要一种创建弹窗或记录到控制台的方法。
在 WordPress Stack Exchange 上,有很多知识渊博的人解释他们的调试技巧,非常棒:你如何调试插件?
在 Javascript 领域,你基本上需要使用 <script>console.log('the value is' + variable);</script>
。并使用Google Chrome检查器和/或Firebug。
在PHP中,它取决于事情发生的地方或您想要输出的位置。
Codex中的官方文档。
用于调试的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:');
/* 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 Answers上的以下问答:如何使用WP-FirePHP扩展?。
这是调试工具箱中必备的插件之一,该插件有许多功能,其中之一是其日志选项卡,只需将其放置在您的代码中,并在您的页面中在插件接口中列出:
do_action( 'qm/debug', 'This happened!' );
do_action( 'qm/debug', $your_var );
do_action( 'qm/debug', [$var1, $var2] );
祝你好运并随时更新进展。
一般的PHP调试策略是使用 print_r( $var )
语句并刷新页面。简单易行。如果你想深入代码,可以安装 Xdebug。
我知道我的回答是在原问题几年之后,但是由于我最近遇到了完全相同的问题,而且仍然找不到令人满意的解决方案,所以我编写了一个插件来解决这个问题。
它专门解决了OP的需求:
我只需要一种创建弹出窗口或记录到控制台的方法。
希望它能帮助所有正在寻找快速简便的方式来调试他们的代码的插件/主题开发者https://wordpress.org/plugins/bugfu-console-debugger
只需安装它并从您的PHP代码中调用日志记录方法即可直接记录到浏览器JavaScript控制台。
BugFu::log($your_string-array-object);
2022年8月编辑
在调用上述方法时记录日志的技术:
安装BugFu可以创建一个PHP和JavaScript之间的桥梁,使得从WordPress代码(主题或插件)中的任何位置快速轻松地记录到浏览器控制台,甚至可以从仅作为AJAX回调运行的PHP代码中进行记录。
无需担心开启或关闭WordPress调试日志,无需访问托管服务器以读取通常的PHP日志,也无需安装特殊的浏览器扩展或IDE工具。
alert('Hello World!');
这样的方式来扩展你的调试思路,这是我们都做过的事情。学习如何观察 PHP 日志,并基本上学会细致入微。因为 WordPress 很棒,但它是建立在其他具有成熟调试方法的工具之上的。祝你好运! - Giacomo1968