函数文档

_xml_wp_die_handler()

💡 云策文档标注

概述

_xml_wp_die_handler() 是处理 XML 请求时 wp_die() 的处理器,用于终止 WordPress 执行并返回 XML 格式的错误响应。

关键要点

  • 函数签名:_xml_wp_die_handler( $message, $title = '', $args = array() )
  • 参数:$message(必需,错误消息字符串)、$title(可选,错误标题字符串,默认为空)、$args(可选,控制行为的参数数组,默认为空数组)
  • 内部调用 _wp_die_process_input() 处理输入参数,并设置 Content-Type 为 text/xml 的 HTTP 头
  • 输出 XML 响应,包含错误消息、标题、代码和响应状态,并根据参数决定是否调用 die() 终止执行
  • 相关函数:_wp_die_process_input()、status_header()、nocache_headers()
  • 引入版本:WordPress 5.2.0

代码示例

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
<?xml version="1.0" encoding="{$parsed_args['charset']}"?>
<error>
    <message>{$message}</message>
    <title>{$title}</title>
    <code>{$parsed_args['code']}</code>
    <data>{$parsed_args['data']}</data>
    <response>{$parsed_args['response']}</response>
</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();
	}
}

📄 原文内容

Kills WordPress execution and displays XML response with an error message.

Description

This is the handler for wp_die() when processing XML requests.

Parameters

$messagestringrequired
Error message.
$titlestringoptional
Error title. Default empty string.
$argsstring|arrayoptional
Arguments to control behavior.

Default:array()

Source

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></title>
    <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();
	}
}

Changelog

Version Description
5.2.0 Introduced.