Re-purpose wp_die() for ajax responses.
* Allows unit testing of core ajax actions. * wp_die() now has separate filters to choose a handler depending on the context (ajax, XML-RPC, else). * wp_die) in ajax context does not need to be called with a string. Conversion takes place before die(). props kurtpayne, see #15327. git-svn-id: http://svn.automattic.com/wordpress/trunk@19801 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
8bd826e43b
commit
acd0f7c375
|
@ -131,6 +131,6 @@ class WP_Ajax_Response {
|
||||||
foreach ( (array) $this->responses as $response )
|
foreach ( (array) $this->responses as $response )
|
||||||
echo $response;
|
echo $response;
|
||||||
echo '</wp_ajax>';
|
echo '</wp_ajax>';
|
||||||
die();
|
wp_die();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2043,15 +2043,13 @@ function wp_nonce_ays( $action ) {
|
||||||
* @param string $title Error title.
|
* @param string $title Error title.
|
||||||
* @param string|array $args Optional arguments to control behavior.
|
* @param string|array $args Optional arguments to control behavior.
|
||||||
*/
|
*/
|
||||||
function wp_die( $message, $title = '', $args = array() ) {
|
function wp_die( $message = '', $title = '', $args = array() ) {
|
||||||
if ( defined( 'DOING_AJAX' ) && DOING_AJAX )
|
if ( defined( 'DOING_AJAX' ) && DOING_AJAX )
|
||||||
die('-1');
|
$function = apply_filters( 'wp_die_ajax_handler', '_ajax_wp_die_handler' );
|
||||||
|
elseif ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST )
|
||||||
if ( function_exists( 'apply_filters' ) ) {
|
$function = apply_filters( 'wp_die_xmlrpc_handler', '_xmlrpc_wp_die_handler' );
|
||||||
$function = apply_filters( 'wp_die_handler', '_default_wp_die_handler');
|
else
|
||||||
} else {
|
$function = apply_filters( 'wp_die_handler', '_default_wp_die_handler' );
|
||||||
$function = '_default_wp_die_handler';
|
|
||||||
}
|
|
||||||
|
|
||||||
call_user_func( $function, $message, $title, $args );
|
call_user_func( $function, $message, $title, $args );
|
||||||
}
|
}
|
||||||
|
@ -2102,7 +2100,7 @@ function _default_wp_die_handler( $message, $title = '', $args = array() ) {
|
||||||
$message .= "\n<p><a href='javascript:history.back()'>$back_text</a></p>";
|
$message .= "\n<p><a href='javascript:history.back()'>$back_text</a></p>";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !function_exists( 'did_action' ) || !did_action( 'admin_head' ) ) :
|
if ( ! did_action( 'admin_head' ) ) :
|
||||||
if ( !headers_sent() ) {
|
if ( !headers_sent() ) {
|
||||||
status_header( $r['response'] );
|
status_header( $r['response'] );
|
||||||
nocache_headers();
|
nocache_headers();
|
||||||
|
@ -2206,7 +2204,7 @@ function _default_wp_die_handler( $message, $title = '', $args = array() ) {
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body id="error-page">
|
<body id="error-page">
|
||||||
<?php endif; // !function_exists( 'did_action' ) || !did_action( 'admin_head' ) ?>
|
<?php endif; // ! did_action( 'admin_head' ) ?>
|
||||||
<?php echo $message; ?>
|
<?php echo $message; ?>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -2240,13 +2238,19 @@ function _xmlrpc_wp_die_handler( $message, $title = '', $args = array() ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Filter to enable special wp_die handler for xmlrpc requests.
|
* Kill WordPress ajax execution.
|
||||||
*
|
*
|
||||||
* @since 3.2.0
|
* This is the handler for wp_die when processing Ajax requests.
|
||||||
|
*
|
||||||
|
* @since 3.4.0
|
||||||
* @access private
|
* @access private
|
||||||
|
*
|
||||||
|
* @param string $message Optional. Response to print.
|
||||||
*/
|
*/
|
||||||
function _xmlrpc_wp_die_filter() {
|
function _ajax_wp_die_handler( $message = '' ) {
|
||||||
return '_xmlrpc_wp_die_handler';
|
if ( is_scalar( $message ) )
|
||||||
|
die( (string) $message );
|
||||||
|
die( '0' );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -829,8 +829,12 @@ function check_ajax_referer( $action = -1, $query_arg = false, $die = true ) {
|
||||||
|
|
||||||
$result = wp_verify_nonce( $nonce, $action );
|
$result = wp_verify_nonce( $nonce, $action );
|
||||||
|
|
||||||
if ( $die && false == $result )
|
if ( $die && false == $result ) {
|
||||||
die('-1');
|
if ( defined( 'DOING_AJAX' ) && DOING_AJAX )
|
||||||
|
wp_die( -1 );
|
||||||
|
else
|
||||||
|
die( '-1' );
|
||||||
|
}
|
||||||
|
|
||||||
do_action('check_ajax_referer', $action, $result);
|
do_action('check_ajax_referer', $action, $result);
|
||||||
|
|
||||||
|
|
|
@ -98,9 +98,6 @@ function logIO($io,$msg) {
|
||||||
if ( isset($HTTP_RAW_POST_DATA) )
|
if ( isset($HTTP_RAW_POST_DATA) )
|
||||||
logIO("I", $HTTP_RAW_POST_DATA);
|
logIO("I", $HTTP_RAW_POST_DATA);
|
||||||
|
|
||||||
// Make sure wp_die output is XML
|
|
||||||
add_filter( 'wp_die_handler', '_xmlrpc_wp_die_filter' );
|
|
||||||
|
|
||||||
// Allow for a plugin to insert a different class to handle requests.
|
// Allow for a plugin to insert a different class to handle requests.
|
||||||
$wp_xmlrpc_server_class = apply_filters('wp_xmlrpc_server_class', 'wp_xmlrpc_server');
|
$wp_xmlrpc_server_class = apply_filters('wp_xmlrpc_server_class', 'wp_xmlrpc_server');
|
||||||
$wp_xmlrpc_server = new $wp_xmlrpc_server_class;
|
$wp_xmlrpc_server = new $wp_xmlrpc_server_class;
|
||||||
|
|
Loading…
Reference in New Issue