REST API: Do not set X-WP-Deprecated* headers as often.

Only set these headers if (1) `WP_DEBUG` is enabled and (2) headers have not already been sent.

Previously, this code could generate warnings by trying to set a header after response data has already been sent.  This happens when code attached to the `shutdown` filter calls a deprecated function, for example.

Also, these headers are unlikely to be useful in the majority of cases; let's only send them if `WP_DEBUG` is enabled.

Props kraftbj, jnylen0, ocean90, rmccue.
Fixes #40787.


git-svn-id: https://develop.svn.wordpress.org/trunk@40782 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
James Nylen 2017-05-18 17:48:38 +00:00
parent f8e0f14cf3
commit 50f8eff5d1

View File

@ -481,6 +481,9 @@ function rest_ensure_response( $response ) {
* @param string $version Version.
*/
function rest_handle_deprecated_function( $function, $replacement, $version ) {
if ( ! WP_DEBUG || headers_sent() ) {
return;
}
if ( ! empty( $replacement ) ) {
/* translators: 1: function name, 2: WordPress version number, 3: new function name */
$string = sprintf( __( '%1$s (since %2$s; use %3$s instead)' ), $function, $version, $replacement );
@ -502,6 +505,9 @@ function rest_handle_deprecated_function( $function, $replacement, $version ) {
* @param string $version Version.
*/
function rest_handle_deprecated_argument( $function, $message, $version ) {
if ( ! WP_DEBUG || headers_sent() ) {
return;
}
if ( ! empty( $message ) ) {
/* translators: 1: function name, 2: WordPress version number, 3: error message */
$string = sprintf( __( '%1$s (since %2$s; %3$s)' ), $function, $version, $message );