_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. |