如何转储/记录传递给挂钩/过滤器函数的默认值?

时间:2015-02-18 作者:gdaniel

下面是我正在努力实现的一个快速示例:

I am using this filter:

add_filter(\'manage_edit-member_columns\', \'set_custom_edit_member_columns\');

function set_custom_edit_member_columns($columns) {

    $columns[\'photo\'] = "Photo";

    return $columns;

}
函数传递了一个参数($列)。我想看看$列中的内容。通过codex中的示例,我知道这是一个带有列名的数组。

问题如何在该数组中转储/记录的值?

我正在使用Chrome。所以我安装了Chromelogger。这将允许我记录数组,但在函数set\\u custom\\u edit\\u member\\u columns()内调用时,它似乎不起作用。因此,我无法获得$列的值。

这只是一个例子。但是,我很难找到一种方法来转储函数中使用的变量。php或其他不会直接打印到我当前查看的页面的php文件。

3 个回复
最合适的回答,由SO网友:geomagas 整理而成

如果要将日志保存在服务器上,请尝试使用php的error_log() 这比仅仅写入磁盘上的文件更灵活。大致如下:

add_filter(\'manage_edit-member_columns\', \'set_custom_edit_member_columns\');

function set_custom_edit_member_columns($columns) {

    error_log(print_r($columns,true),3,__DIR__."/log.txt");

    $columns[\'photo\'] = "Photo";

    return $columns;

}
OTOH,如果您觉得浏览器控制台更方便,那么应该包含一个js脚本console.log() 您的数据。像这样:

$log_msgs=array();

add_filter(\'manage_edit-member_columns\', \'set_custom_edit_member_columns\');

function set_custom_edit_member_columns($columns) {
    global $log_msgs;

    $log_msgs[]=json_encode($columns);

    $columns[\'photo\'] = "Photo";

    return $columns;

}

function console_log_msgs()
  {
  global $log_msgs;
  foreach($log_msgs as $msg)
    echo "<script>console.log($msg);</script>";
  }

add_action(\'wp_footer\',\'console_log_msgs\');
(没有测试上面的代码,但你知道了)

SO网友:cybmeta

var_dump 或者任何其他屏幕输出都不可能,您可以使用error_log. 该消息将添加到服务器上的error\\u日志文件中。记录我喜欢的变量this small function:

function log_it( $message ) {
   if( WP_DEBUG === true ){
     if( is_array( $message ) || is_object( $message ) ){
       //error_log will be located according to server configuration
       //you can specify a custom location if needed like this
       //error_log( $var, 0, "full-path-to/error_log.txt")
       error_log( print_r( $message, true ) );
     } else {
       error_log( $message );
     }
   }
}
要使用它,turn WP_DEBUG on 然后做这样的事情:

function set_custom_edit_member_columns($columns) {

    log_it( $columns );

    $columns[\'photo\'] = "Photo";

    return $columns;

}

SO网友:Bruno Rodrigues

将以下函数放入functions.php:

function wpse_178547_log( $message ) {
    file_put_contents( \'custom.log\', date( "d-m-Y H:i:s" ) . \' ::::: \' . $message . PHP_EOL, FILE_APPEND );
}
然后:

function set_custom_edit_member_columns($columns) {

    wpse_178547_log(\'$columns\');

    foreach($columns as $column){
        wpse_178547_log($column);
    }

    $columns[\'photo\'] = "Photo";

    return $columns;

}
名为的文件custom.log 将在项目的根目录中创建。

希望这有帮助。

结束