debugging 如何调试WordPress插件?

o0lyfsai  于 2022-11-14  发布在  WordPress
关注(0)|答案(6)|浏览(119)

我最近继承了一个WordPress插件,它有一些错误。我的问题是,我也是WordPress的新手,我不知道如何记录调试消息,这样我就可以弄清楚发生了什么。
我真的只是需要一种方法来创建一个弹出窗口或日志到一个控制台。

slwdgvem

slwdgvem1#

在WordPress Stack Exchange上有一个很棒的问答,很多知识渊博的人在解释他们的调试技术:How do you debug plugins?
Javascript竞技场,您基本上需要<script>console.log('the value is' + variable);</script>。并使用Google Chrome inspector和/或Firebug
PHP中,这取决于事情发生的位置或您希望输出的位置。

Debugging in 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 Answers中的以下问答:How to use WP-FirePHP extension?

Query Monitor(一个单词)

这是一个调试工具包必须具备的,插件有很多特性,其中之一是它的Logs tab,只需将其放入代码中,并将其列在页面的插件界面中:

do_action( 'qm/debug', 'This happened!' );
do_action( 'qm/debug', $your_var );
do_action( 'qm/debug', [$var1, $var2] );

w8rqjzmb

w8rqjzmb2#

1.不调试就不要开发!
1.请阅读以下内容:http://wp.smashingmagazine.com/2011/03/08/ten-things-every-wordpress-plugin-developer-should-know/
祝你好运,你可以随时向我们通报最新情况。

n1bvdmb6

n1bvdmb63#

一般的PHP调试策略是使用print_r( $var )语句和刷新页面。简单易行。如果你想单步执行,Xdebug就是你要安装的代码。

nzrxty8p

nzrxty8p4#

根据您的评论Much rather use a system where debug messages can be turned off and on in one place
可以在WordPress中完成,有一个名为WP_DEBUG的常量,你可以从WordPress文件夹中的wp-config.php文件(你添加数据库参数的文件)中将其设置为truefalse
因此,您可以用途:

if( WP_DEBUG ){
echo "<script> alert('Hello World!'); </script>"; 
}

只有当您将WP_DEBUG设置为true时(例如在开发版本的网站上,如在您的本地主机上),该警告才会显示,而在您的生产版本的网站上不会显示(您只需在那里将WP_DEBUG设置为false)。

az31mfrm

az31mfrm5#

我知道我的答案是在最初的问题之后几年,但是,因为我最近遇到了同样的问题,仍然不能找到一个满意的解决方案,我为此编写了一个插件。
它专门解决了OP需求:
我真的只是需要一种方法来创建一个弹出窗口或日志到一个控制台。
希望它能帮助所有的插件/主题开发者,他们正在寻找一种快速简单的方法来调试他们的代码https://wordpress.org/plugins/bugfu-console-debugger
只需安装它并从PHP代码中调用logging方法,即可直接登录到浏览器JavaScript控制台。

BugFu::log($your_string-array-object);

2022年8月编辑

在记录调用上述方法的内容时使用的技术:

  1. PHP(后端)写入数据库日志
  2. JavaScript(前端)调用 AJAX 来读取数据库日志
  3. PHP(后端)读取数据库日志并返回其内容
  4. JavaScript(前端)将返回的内容打印到浏览器控制台
    安装BugFu后,您将在PHP和JavaScript之间建立一座桥梁,这使得您可以从WordPress代码(主题或插件)中的任何位置,甚至从仅作为 AJAX 回调运行的PHP代码,快速轻松地登录到浏览器控制台。
    无需担心打开和关闭WordPress调试日志,无需访问托管服务器来读取通常的PHP日志,无需安装特殊的浏览器扩展或IDE工具。
vlurs2pr

vlurs2pr6#

通过使用Visual Studio和一个dev工具php调试器扩展,你可以一步一步地调试它,而不是在运行时记录它们并试图找出变量值。
PS:它不是免费的:(

相关问题