36

我最近继承了一个 WordPress 插件,其中有一些错误。我的问题是我也是 WordPress 的新手,我不知道如何记录调试消息,以便弄清楚发生了什么。

我真的只需要一种方法来创建弹出窗口或登录到控制台。

4

6 回答 6

26

在 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 Answers 中的以下问答:如何使用 WP-FirePHP 扩展?.

于 2013-01-27T01:22:58.870 回答
5
  1. 不调试就不要开发!
  2. 请阅读:http ://wp.smashingmagazine.com/2011/03/08/ten-things-every-wordpress-plugin-developer-should-know/

祝你好运,你可以让我们更新。

于 2013-01-26T22:01:37.223 回答
3

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

于 2013-01-26T22:01:54.397 回答
1

根据您的评论,您在哪里Much rather use a system where debug messages can be turned off and on in one place

它可以在 WordPress 中完成。有一个常量WP_DEBUG,您可以在 WordPress 文件夹(添加数据库参数的文件)中设置true或设置该常量。falsewp-config.php

因此,您可以使用:

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

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

于 2013-01-27T03:54:50.477 回答
-1

通过使用 Visual Studio 和开发工具 php 调试器扩展,您实际上可以逐步调试它,而不是记录它们并尝试在运行时找出变量值。可能还有其他选择。

PS:它不是免费的:(

于 2017-12-03T21:58:38.130 回答
-2

我知道我的答案是在最初的问题之后几年出现的,但是由于我最近遇到了同样的问题并且仍然找不到令人满意的解决方案,所以我为此编写了一个插件。

它专门解决了 OP 的需求:

我真的只需要一种方法来创建弹出窗口或登录到控制台。

希望它可以帮助所有插件/主题开发人员,他们正在寻找一种快速简便的方法来调试他们的代码https://wordpress.org/plugins/bugfu-console-debugger

只需安装它并从您的 PHP 代码中调用 logging 方法即可直接登录到浏览器 JavaScript 控制台。

BugFu::log($your_string-array-object);
于 2018-03-24T07:19:03.683 回答