Version Description
Refactor the HTTP Requests panel: - Remove jQuery usage - Properly display response codes - Better CSS to emphasize errors and long requests ( > 250ms )
Download this release
Release Info
Developer | aidvu |
Plugin | Debug Bar |
Version | 1.1.1 |
Comparing to | |
See all releases |
Code changes from version 1.1 to 1.1.1
- debug-bar.php +1 -1
- panels/class-debug-bar-wp-http.php +156 -92
- readme.txt +15 -3
debug-bar.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
Plugin URI: https://wordpress.org/plugins/debug-bar/
|
5 |
Description: Adds a debug menu to the admin bar that shows query, cache, and other helpful debugging information.
|
6 |
Author: wordpressdotorg
|
7 |
-
Version: 1.1
|
8 |
Author URI: https://wordpress.org/
|
9 |
Text Domain: debug-bar
|
10 |
*/
|
4 |
Plugin URI: https://wordpress.org/plugins/debug-bar/
|
5 |
Description: Adds a debug menu to the admin bar that shows query, cache, and other helpful debugging information.
|
6 |
Author: wordpressdotorg
|
7 |
+
Version: 1.1.1
|
8 |
Author URI: https://wordpress.org/
|
9 |
Text Domain: debug-bar
|
10 |
*/
|
panels/class-debug-bar-wp-http.php
CHANGED
@@ -1,48 +1,24 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
class Debug_Bar_WP_Http_Request {
|
4 |
-
public $time_start;
|
5 |
-
public $time_end;
|
6 |
-
|
7 |
-
public $request;
|
8 |
-
public $result;
|
9 |
-
public $stack_trace;
|
10 |
-
|
11 |
-
function __construct( $request ) {
|
12 |
-
$this->time_start = microtime( true );
|
13 |
-
if ( ! isset( $_GET['fullbody'] ) ) {
|
14 |
-
$request['args']['body'] = '[omitted]';
|
15 |
-
}
|
16 |
-
$this->request = $request;
|
17 |
-
}
|
18 |
-
|
19 |
-
function end( $result ) {
|
20 |
-
$this->time_end = microtime( true );
|
21 |
-
if ( is_array( $result['r'] ) && ! isset( $_GET['fullbody'] ) ) {
|
22 |
-
$result['r']['body'] = '[omitted]';
|
23 |
-
$result['args']['body'] = '[omitted]';
|
24 |
-
}
|
25 |
-
$this->result = $result;
|
26 |
-
$this->stack_trace = wp_debug_backtrace_summary( null, 0, false );
|
27 |
-
}
|
28 |
-
}
|
29 |
-
|
30 |
class Debug_Bar_WP_Http extends Debug_Bar_Panel {
|
31 |
-
public $requests =
|
|
|
|
|
|
|
|
|
32 |
|
33 |
function early_init() {
|
34 |
-
add_filter( 'http_request_args',
|
35 |
-
|
36 |
}
|
37 |
|
38 |
function before_http_request( $args, $url ) {
|
39 |
-
$
|
40 |
-
'args' => $args,
|
41 |
-
'url' => $url,
|
42 |
-
) );
|
43 |
|
44 |
-
$this->requests["$
|
45 |
-
|
|
|
|
|
46 |
|
47 |
return $args;
|
48 |
}
|
@@ -52,17 +28,43 @@ class Debug_Bar_WP_Http extends Debug_Bar_Panel {
|
|
52 |
return;
|
53 |
}
|
54 |
|
55 |
-
$
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
62 |
}
|
63 |
|
64 |
-
function
|
65 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
}
|
67 |
|
68 |
function init() {
|
@@ -74,68 +76,130 @@ class Debug_Bar_WP_Http extends Debug_Bar_Panel {
|
|
74 |
}
|
75 |
|
76 |
function debug_bar_classes( $classes ) {
|
77 |
-
if (
|
|
|
|
|
|
|
78 |
$classes[] = 'debug-bar-php-warning-summary';
|
79 |
}
|
80 |
-
|
81 |
return $classes;
|
82 |
}
|
83 |
|
84 |
function render() {
|
85 |
-
$
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
$
|
101 |
-
|
|
|
|
|
|
|
|
|
|
|
102 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
103 |
$class = '';
|
104 |
-
|
105 |
-
|
|
|
|
|
106 |
$class = 'err';
|
107 |
-
$total_errors++;
|
108 |
-
if ( is_wp_error( $r->result['r'] ) ) {
|
109 |
-
$code = $r->result['r']->get_error_code();
|
110 |
-
} else {
|
111 |
-
$code = $r->result['r']['response']['code'];
|
112 |
-
}
|
113 |
}
|
114 |
|
115 |
-
$
|
116 |
-
$
|
117 |
-
$
|
118 |
-
$out .= "<td>" . number_format( sprintf( '%0.1f', $elapsed * 1000 ), 1 ) . " ms</td>";
|
119 |
-
$out .= "<td>{$r->request['args']['method']}</td>";
|
120 |
-
$out .= "<td>{$r->request['url']}</td>";
|
121 |
-
$out .= "<td>{$code}</td>";
|
122 |
-
$out .= "</tr>\n";
|
123 |
-
$out .= "<tr id='pdbhttp_$i' style='display: none'><td colspan=5><pre>" . esc_html( print_r( $r, 1 ) ) . "</pre></td></tr>\n";
|
124 |
-
}
|
125 |
-
$out .= "</tbody>\n</table>\n";
|
126 |
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
$heading .= '<h2><span>Errors:</span>' . number_format( $total_errors ) . "</h2>\n";
|
131 |
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
136 |
}
|
137 |
|
138 |
-
$out
|
|
|
|
|
|
|
139 |
|
140 |
echo $out;
|
141 |
}
|
1 |
<?php
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
class Debug_Bar_WP_Http extends Debug_Bar_Panel {
|
4 |
+
public $requests = [];
|
5 |
+
|
6 |
+
public $time_limit = 250; // milliseconds
|
7 |
+
public $total_time = 0;
|
8 |
+
public $num_errors = 0;
|
9 |
|
10 |
function early_init() {
|
11 |
+
add_filter( 'http_request_args', [ $this, 'before_http_request' ], 10, 3 );
|
12 |
+
add_filter( 'http_api_debug', [ $this, 'after_http_request' ], 10, 5 );
|
13 |
}
|
14 |
|
15 |
function before_http_request( $args, $url ) {
|
16 |
+
$args['time_start'] = microtime( true );
|
|
|
|
|
|
|
17 |
|
18 |
+
$this->requests["{$args['time_start']}"] = [
|
19 |
+
'url' => $url,
|
20 |
+
'args' => $args
|
21 |
+
];
|
22 |
|
23 |
return $args;
|
24 |
}
|
28 |
return;
|
29 |
}
|
30 |
|
31 |
+
$args['time_stop'] = microtime( true );
|
32 |
+
|
33 |
+
$args['duration'] = $args['time_stop'] - $args['time_start'];
|
34 |
+
$args['duration'] *= 1000;
|
35 |
+
|
36 |
+
$this->total_time += $args['duration'];
|
37 |
+
|
38 |
+
if ( $this->is_request_error( $response ) ) {
|
39 |
+
$this->num_errors++;
|
40 |
+
} else {
|
41 |
+
if ( ! isset( $_GET['fullbody'] ) ) {
|
42 |
+
$response['body'] = '[omitted]';
|
43 |
+
unset( $response['http_response'] );
|
44 |
+
}
|
45 |
+
}
|
46 |
+
|
47 |
+
$this->requests["{$args['time_start']}"] = array_merge(
|
48 |
+
$this->requests["{$args['time_start']}"],
|
49 |
+
[
|
50 |
+
'r' => $response,
|
51 |
+
'class' => $class,
|
52 |
+
'args' => $args,
|
53 |
+
'url' => $url,
|
54 |
+
'stack_trace' => wp_debug_backtrace_summary( null, 0, false ),
|
55 |
+
]
|
56 |
+
);
|
57 |
}
|
58 |
|
59 |
+
function is_request_error( $response ) {
|
60 |
+
if (
|
61 |
+
is_wp_error( $response )
|
62 |
+
|| $response['response']['code'] >= 400
|
63 |
+
) {
|
64 |
+
return true;
|
65 |
+
}
|
66 |
+
|
67 |
+
return false;
|
68 |
}
|
69 |
|
70 |
function init() {
|
76 |
}
|
77 |
|
78 |
function debug_bar_classes( $classes ) {
|
79 |
+
if (
|
80 |
+
$this->num_errors > 0
|
81 |
+
|| $this->total_time > $this->time_limit
|
82 |
+
) {
|
83 |
$classes[] = 'debug-bar-php-warning-summary';
|
84 |
}
|
|
|
85 |
return $classes;
|
86 |
}
|
87 |
|
88 |
function render() {
|
89 |
+
$num_requests = number_format( count( $this->requests ) );
|
90 |
+
$elapsed = number_format( $this->total_time, 1 );
|
91 |
+
$num_errors = number_format( $this->num_errors );
|
92 |
+
|
93 |
+
if ( isset( $_GET['fullbody'] ) ) {
|
94 |
+
$fullbody = '<p style="clear:left">Request and response bodies are included. <a href="' . esc_attr( remove_query_arg( 'fullbody' ) ) . '">Reload with those omitted.</a>';
|
95 |
+
} else {
|
96 |
+
$fullbody = '<p style="clear:left">Request and response bodies are omitted. <a href="' . esc_attr( add_query_arg( 'fullbody', 'please' ) ) . '">Reload with those included.</a>';
|
97 |
+
}
|
98 |
+
|
99 |
+
$css_errors = '';
|
100 |
+
if (
|
101 |
+
$this->num_errors > 0
|
102 |
+
|| $this->total_time > $this->time_limit
|
103 |
+
) {
|
104 |
+
$css_errors = "#wp-admin-bar-debug-bar-Debug_Bar_WP_Http, #debug-menu-link-Debug_Bar_WP_Http { background-color: #d00 !important; background-image: -moz-linear-gradient(bottom,#f44,#d00) !important; background-image: -webkit-gradient(linear,left bottom,left top,from(#f44),to(#d00)) important; }\n";
|
105 |
+
}
|
106 |
+
|
107 |
+
$elapsed_class = '';
|
108 |
+
if ( $this->num_errors > 0 ) {
|
109 |
+
$elapsed_class = 'debug_bar_http_error';
|
110 |
+
}
|
111 |
|
112 |
+
$errors_class = '';
|
113 |
+
if ( $this->total_time > $this->time_limit ) {
|
114 |
+
$errors_class = 'debug_bar_http_error';
|
115 |
+
}
|
116 |
+
|
117 |
+
$out =<<<HTML
|
118 |
+
<style>
|
119 |
+
#debug_bar_http { clear: left; }
|
120 |
+
#debug_bar_http .err, .debug_bar_http_error { background-color: #ffebe8; border: 1px solid #c00 !important; }
|
121 |
+
#debug_bar_http th, #debug_bar_http td { padding: 8px; }
|
122 |
+
#debug_bar_http pre { font-family: monospace; }
|
123 |
+
{$css_errors}
|
124 |
+
</style>
|
125 |
+
|
126 |
+
<script>
|
127 |
+
function debug_bar_http_toggle( id ) {
|
128 |
+
var e = document.getElementById( id );
|
129 |
+
if ( e.style.display === "" ) {
|
130 |
+
e.style.display = "none";
|
131 |
+
} else {
|
132 |
+
e.style.display = "";
|
133 |
+
}
|
134 |
+
}
|
135 |
+
</script>
|
136 |
+
|
137 |
+
<h2><span>HTTP Requests:</span> {$num_requests}</h2>
|
138 |
+
<h2 class="{$elapsed_class}"><span>Total Elapsed:</span> {$elapsed} ms</h2>
|
139 |
+
<h2 class="{$errors_class}"><span>Errors:</span> {$num_errors}</h2>
|
140 |
+
|
141 |
+
{$fullbody}
|
142 |
+
|
143 |
+
<table id="debug_bar_http">
|
144 |
+
<thead>
|
145 |
+
<tr>
|
146 |
+
<th>More</th>
|
147 |
+
<th>Start</th>
|
148 |
+
<th>Duration</th>
|
149 |
+
<th>Method</th>
|
150 |
+
<th>URL</th>
|
151 |
+
<th>Code</th>
|
152 |
+
</tr>
|
153 |
+
</thead>
|
154 |
+
<tbody>
|
155 |
+
HTML;
|
156 |
+
|
157 |
+
foreach( $this->requests as $i => $r ) {
|
158 |
$class = '';
|
159 |
+
if (
|
160 |
+
$this->is_request_error( $r['r'] )
|
161 |
+
|| $r['args']['duration'] > $this->time_limit
|
162 |
+
) {
|
163 |
$class = 'err';
|
|
|
|
|
|
|
|
|
|
|
|
|
164 |
}
|
165 |
|
166 |
+
$start = $r['args']['time_start'] - $_SERVER['REQUEST_TIME_FLOAT'];
|
167 |
+
$start *= 1000;
|
168 |
+
$start = number_format( $start, 1 );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
169 |
|
170 |
+
$duration = number_format( $r['args']['duration'], 1 );
|
171 |
+
$method = esc_html( $r['args']['method'] );
|
172 |
+
$url = esc_html( $r['url'] );
|
|
|
173 |
|
174 |
+
if ( is_wp_error( $r['r'] ) ) {
|
175 |
+
$code = esc_html( $r['r']->get_error_code() );
|
176 |
+
} else {
|
177 |
+
$code = esc_html( $r['r']['response']['code'] );
|
178 |
+
}
|
179 |
+
|
180 |
+
$details = esc_html( print_r( $r, true ) );
|
181 |
+
|
182 |
+
$record_id = 'debug_bar_http_record_' . md5( $i );
|
183 |
+
$out .=<<<HTML
|
184 |
+
<tr class="{$class}">
|
185 |
+
<td><a onclick="debug_bar_http_toggle( '{$record_id}' );">Toggle</a></td>
|
186 |
+
<td>{$start} ms</td>
|
187 |
+
<td>{$duration} ms</td>
|
188 |
+
<td>{$method}</td>
|
189 |
+
<td>{$url}</td>
|
190 |
+
<td>{$code}</td>
|
191 |
+
</tr>
|
192 |
+
|
193 |
+
<tr id="{$record_id}" style="display: none">
|
194 |
+
<td colspan="5"><pre>{$details}</pre></td>
|
195 |
+
</tr>
|
196 |
+
HTML;
|
197 |
}
|
198 |
|
199 |
+
$out .=<<<HTML
|
200 |
+
</tbody>
|
201 |
+
</table>
|
202 |
+
HTML;
|
203 |
|
204 |
echo $out;
|
205 |
}
|
readme.txt
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
=== Debug Bar ===
|
2 |
-
Contributors: wordpressdotorg, ryan, westi, koopersmith, duck_, mitchoyoshitaka, dd32, jrf, obenland, nacin, evansolomon, Otto42, aidvu
|
3 |
Tags: debug
|
4 |
-
Tested up to: 5.5.
|
5 |
-
Stable tag: 1.1
|
6 |
Requires at least: 3.4
|
7 |
|
8 |
Adds a debug menu to the admin bar that shows query, cache, and other helpful debugging information.
|
@@ -29,6 +29,12 @@ There are numerous other add-ons available to get more insight into, for instanc
|
|
29 |
|
30 |
== Upgrade Notice ==
|
31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
= 1.1 =
|
33 |
Add a new panel for HTTP requests using the native WP methods.
|
34 |
AMP dev mode compatibility.
|
@@ -106,6 +112,12 @@ Initial Release
|
|
106 |
|
107 |
== Changelog ==
|
108 |
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
= 1.1 =
|
110 |
Add a new panel for HTTP requests using the native WP methods.
|
111 |
AMP dev mode compatibility.
|
1 |
=== Debug Bar ===
|
2 |
+
Contributors: wordpressdotorg, ryan, westi, koopersmith, duck_, mitchoyoshitaka, dd32, jrf, obenland, nacin, evansolomon, Otto42, aidvu, josephscott
|
3 |
Tags: debug
|
4 |
+
Tested up to: 5.5.3
|
5 |
+
Stable tag: 1.1.1
|
6 |
Requires at least: 3.4
|
7 |
|
8 |
Adds a debug menu to the admin bar that shows query, cache, and other helpful debugging information.
|
29 |
|
30 |
== Upgrade Notice ==
|
31 |
|
32 |
+
= 1.1.1 =
|
33 |
+
Refactor the HTTP Requests panel:
|
34 |
+
- Remove jQuery usage
|
35 |
+
- Properly display response codes
|
36 |
+
- Better CSS to emphasize errors and long requests ( > 250ms )
|
37 |
+
|
38 |
= 1.1 =
|
39 |
Add a new panel for HTTP requests using the native WP methods.
|
40 |
AMP dev mode compatibility.
|
112 |
|
113 |
== Changelog ==
|
114 |
|
115 |
+
= 1.1.1 =
|
116 |
+
Refactor the HTTP Requests panel:
|
117 |
+
- Remove jQuery usage
|
118 |
+
- Properly display response codes
|
119 |
+
- Better CSS to emphasize errors and long requests ( > 250ms )
|
120 |
+
|
121 |
= 1.1 =
|
122 |
Add a new panel for HTTP requests using the native WP methods.
|
123 |
AMP dev mode compatibility.
|