_xml_wp_die_handler

The timeline below displays how wordpress function _xml_wp_die_handler has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.2

/**
 * Kills WordPress execution and displays XML response with an error message.
 *
 * This is the handler for wp_die() when processing XML requests.
 *
 * @since 5.2.0
 * @access private
 *
 * @param string       $message Error message.
 * @param string       $title   Optional. Error title. Default empty string.
 * @param string|array $args    Optional. Arguments to control behavior. Default empty array.
 */
function _xml_wp_die_handler($message, $title = '', $args = array())
{
    list($message, $title, $parsed_args) = _wp_die_process_input($message, $title, $args);
    $message = htmlspecialchars($message);
    $title = htmlspecialchars($title);
    $xml = <<<EOD
    <error>
        <code>{$parsed_args['code']}</code>
        <title><![CDATA[{$title}]]></title>
        <message><![CDATA[{$message}]]></message>
        <data>
            <status>{$parsed_args['response']}</status>
        </data>
    </error>
    
    EOD;
    if (!headers_sent()) {
        header("Content-Type: text/xml; charset={$parsed_args['charset']}");
        if (null !== $parsed_args['response']) {
            status_header($parsed_args['response']);
        }
        nocache_headers();
    }
    echo $xml;
    if ($parsed_args['exit']) {
        die;
    }
}

WordPress Version: 5.3

/**
 * Kills WordPress execution and displays XML response with an error message.
 *
 * This is the handler for wp_die() when processing XML requests.
 *
 * @since 5.2.0
 * @access private
 *
 * @param string       $message Error message.
 * @param string       $title   Optional. Error title. Default empty.
 * @param string|array $args    Optional. Arguments to control behavior. Default empty array.
 */
function _xml_wp_die_handler($message, $title = '', $args = array())
{
    list($message, $title, $parsed_args) = _wp_die_process_input($message, $title, $args);
    $message = htmlspecialchars($message);
    $title = htmlspecialchars($title);
    $xml = <<<EOD
    <error>
        <code>{$parsed_args['code']}</code>
        <title><![CDATA[{$title}]]></title>
        <message><![CDATA[{$message}]]></message>
        <data>
            <status>{$parsed_args['response']}</status>
        </data>
    </error>
    
    EOD;
    if (!headers_sent()) {
        header("Content-Type: text/xml; charset={$parsed_args['charset']}");
        if (null !== $parsed_args['response']) {
            status_header($parsed_args['response']);
        }
        nocache_headers();
    }
    echo $xml;
    if ($parsed_args['exit']) {
        die;
    }
}

WordPress Version: 5.2

/**
 * Kills WordPress execution and displays XML response with an error message.
 *
 * This is the handler for wp_die() when processing XML requests.
 *
 * @since 5.2.0
 * @access private
 *
 * @param string       $message Error message.
 * @param string       $title   Optional. Error title. Default empty.
 * @param string|array $args    Optional. Arguments to control behavior. Default empty array.
 */
function _xml_wp_die_handler($message, $title = '', $args = array())
{
    list($message, $title, $r) = _wp_die_process_input($message, $title, $args);
    $message = htmlspecialchars($message);
    $title = htmlspecialchars($title);
    $xml = <<<EOD
    <error>
        <code>{$r['code']}</code>
        <title><![CDATA[{$title}]]></title>
        <message><![CDATA[{$message}]]></message>
        <data>
            <status>{$r['response']}</status>
        </data>
    </error>
    
    EOD;
    if (!headers_sent()) {
        header('Content-Type: text/xml; charset=utf-8');
        if (null !== $r['response']) {
            status_header($r['response']);
        }
        nocache_headers();
    }
    echo $xml;
    if ($r['exit']) {
        die;
    }
}