WP_Ajax_Response::add() WordPress Method
The WP_Ajax_Response::add() method is used to add data to an AJAX response. The first parameter is the name of the data element, and the second parameter is the value of the data element.
WP_Ajax_Response::add( string|array $args = '' ) #
Appends data to an XML response based on given arguments.
Description
With $args defaults, extra data output would be:
<response action='{$action}_$id'>
<$what id='$id' position='$position'>
<response_data><![CDATA[$data]]></response_data>
</$what>
</response>Parameters
- $args
(string|array)(Optional)An array or string of XML response arguments.
- 'what'
(string) XML-RPC response type. Used as a child element of<response>. Default 'object' (<object>). - 'action'
(string|false) Value to use for theactionattribute in<response>. Will be appended with_$idon output. If false,$actionwill default to the value of$_POST['action']. Default false. - 'id'
(int|WP_Error) The response ID, used as the response typeidattribute. Also accepts aWP_Errorobject if the ID does not exist. Default 0. - 'old_id'
(int|false) The previous response ID. Used as the value for the response typeold_idattribute. False hides the attribute. Default false. - 'position'
(string) Value of the response typepositionattribute. Accepts 1 (bottom), -1 (top), HTML ID (after), or -HTML ID (before). Default 1 (bottom). - 'data'
(string|WP_Error) The response content/message. Also accepts a WP_Error object if the ID does not exist. - 'supplemental'
(array) An array of extra strings that will be output within a<supplemental>element as CDATA. Default empty array.
Default value: ''
- 'what'
Return
(string) XML response.
Source
File: wp-includes/class-wp-ajax-response.php
public function add( $args = '' ) {
$defaults = array(
'what' => 'object',
'action' => false,
'id' => '0',
'old_id' => false,
'position' => 1,
'data' => '',
'supplemental' => array(),
);
$parsed_args = wp_parse_args( $args, $defaults );
$position = preg_replace( '/[^a-z0-9:_-]/i', '', $parsed_args['position'] );
$id = $parsed_args['id'];
$what = $parsed_args['what'];
$action = $parsed_args['action'];
$old_id = $parsed_args['old_id'];
$data = $parsed_args['data'];
if ( is_wp_error( $id ) ) {
$data = $id;
$id = 0;
}
$response = '';
if ( is_wp_error( $data ) ) {
foreach ( (array) $data->get_error_codes() as $code ) {
$response .= "<wp_error code='$code'><![CDATA[" . $data->get_error_message( $code ) . ']]></wp_error>';
$error_data = $data->get_error_data( $code );
if ( ! $error_data ) {
continue;
}
$class = '';
if ( is_object( $error_data ) ) {
$class = ' class="' . get_class( $error_data ) . '"';
$error_data = get_object_vars( $error_data );
}
$response .= "<wp_error_data code='$code'$class>";
if ( is_scalar( $error_data ) ) {
$response .= "<![CDATA[$error_data]]>";
} elseif ( is_array( $error_data ) ) {
foreach ( $error_data as $k => $v ) {
$response .= "<$k><![CDATA[$v]]></$k>";
}
}
$response .= '</wp_error_data>';
}
} else {
$response = "<response_data><![CDATA[$data]]></response_data>";
}
$s = '';
if ( is_array( $parsed_args['supplemental'] ) ) {
foreach ( $parsed_args['supplemental'] as $k => $v ) {
$s .= "<$k><![CDATA[$v]]></$k>";
}
$s = "<supplemental>$s</supplemental>";
}
if ( false === $action ) {
$action = $_POST['action'];
}
$x = '';
$x .= "<response action='{$action}_$id'>"; // The action attribute in the xml output is formatted like a nonce action.
$x .= "<$what id='$id' " . ( false === $old_id ? '' : "old_id='$old_id' " ) . "position='$position'>";
$x .= $response;
$x .= $s;
$x .= "</$what>";
$x .= '</response>';
$this->responses[] = $x;
return $x;
}
Expand full source codeCollapse full source codeView on TracView on GitHub
Changelog
| Version | Description |
|---|---|
| 2.1.0 | Introduced. |