函数文档

_default_wp_die_handler()

💡 云策文档标注

概述

_default_wp_die_handler() 是 wp_die() 的默认错误处理函数,用于终止 WordPress 执行并显示错误页面。开发者可通过 'wp_die_handler' 过滤器自定义处理逻辑。

关键要点

  • 作为 wp_die() 的默认处理器,处理错误消息和参数
  • 接受三个参数:$message(必需,字符串或 WP_Error 对象)、$title(可选,错误标题)、$args(可选,控制行为的数组)
  • 内部调用 _wp_die_process_input() 处理输入,并支持附加错误、链接和返回链接等功能
  • 可通过 'wp_die_handler' 过滤器覆盖,实现自定义错误处理

代码示例

function _default_wp_die_handler( $message, $title = '', $args = array() ) {
    list( $message, $title, $parsed_args ) = _wp_die_process_input( $message, $title, $args );
    // 处理消息和参数,生成错误页面输出
}

注意事项

  • 函数在 WordPress 3.0.0 版本引入,是核心错误处理机制的一部分
  • 相关函数包括 wp_robots()、_wp_die_process_input()、get_language_attributes() 等,用于辅助处理
  • 在自定义处理时,需确保兼容原始参数和行为,避免破坏错误显示流程

📄 原文内容

Kills WordPress execution and displays HTML page with an error message.

Description

This is the default handler for wp_die() . If you want a custom one, you can override this using the ‘wp_die_handler’ filter in wp_die() .

Parameters

$messagestring|WP_Errorrequired
Error message or WP_Error object.
$titlestringoptional
Error title. Default empty string.
$argsstring|arrayoptional
Arguments to control behavior.

Default:array()

Source

function _default_wp_die_handler( $message, $title = '', $args = array() ) {
list( $message, $title, $parsed_args ) = _wp_die_process_input( $message, $title, $args );

if ( is_string( $message ) ) {
if ( ! empty( $parsed_args['additional_errors'] ) ) {
$message = array_merge(
array( $message ),
wp_list_pluck( $parsed_args['additional_errors'], 'message' )
);
$message = "<ul>ntt<li>" . implode( "</li>ntt<li>", $message ) . "</li>nt</ul>";
}

$message = sprintf(
'<div class="wp-die-message">%s</div>',
$message
);
}

$have_gettext = function_exists( '__' );

if ( ! empty( $parsed_args['link_url'] ) && ! empty( $parsed_args['link_text'] ) ) {
$link_url = $parsed_args['link_url'];
if ( function_exists( 'esc_url' ) ) {
$link_url = esc_url( $link_url );
}
$link_text = $parsed_args['link_text'];
$message .= "n<p><a href='{$link_url}'>{$link_text}</a></p>";
}

if ( isset( $parsed_args['back_link'] ) && $parsed_args['back_link'] ) {
$back_text = $have_gettext ? __( '« Back' ) : '« Back';
$message .= "n<p><a href='javascript:history.back()'>$back_text</a></p>";
}

if ( ! did_action( 'admin_head' ) ) :
if ( ! headers_sent() ) {
header( "Content-Type: text/html; charset={$parsed_args['charset']}" );
status_header( $parsed_args['response'] );
nocache_headers();
}

$text_direction = $parsed_args['text_direction'];
$dir_attr = "dir='$text_direction'";

/*
* If `text_direction` was not explicitly passed,
* use get_language_attributes() if available.
*/
if ( empty( $args['text_direction'] )
&& function_exists( 'language_attributes' ) && function_exists( 'is_rtl' )
) {
$dir_attr = get_language_attributes();
}
?>

<html <?php echo $dir_attr; ?>>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $parsed_args['charset']; ?>" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title></title>
<style type="text/css">
html {
background: #f1f1f1;
}
body {
background: #fff;
border: 1px solid #ccd0d4;
color: #444;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
margin: 2em auto;
padding: 1em 2em;
max-width: 700px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
box-shadow: 0 1px 1px rgba(0, 0, 0, .04);
}
h1 {
border-bottom: 1px solid #dadada;
clear: both;
color: #666;
font-size: 24px;
margin: 30px 0 0 0;
padding: 0;
padding-bottom: 7px;
}
#error-page {
margin-top: 50px;
}
#error-page p,
#error-page .wp-die-message {
font-size: 14px;
line-height: 1.5;
margin: 25px 0 20px;
}
#error-page code {
font-family: Consolas, Monaco, monospace;
}
ul li {
margin-bottom: 10px;
font-size: 14px ;
}
a {
color: #2271b1;
}
a:hover,
a:active {
color: #135e96;
}
a:focus {
color: #043959;
box-shadow: 0 0 0 2px #2271b1;
outline: 2px solid transparent;
}
.button {
background: #f3f5f6;
border: 1px solid #016087;
color: #016087;
display: inline-block;
text-decoration: none;
font-size: 13px;
line-height: 2;
height: 28px;
margin: 0;
padding: 0 10px 1px;
cursor: pointer;
-webkit-border-radius: 3px;
-webkit-appearance: none;
border-radius: 3px;
white-space: nowrap;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;

vertical-align: top;
}

.button.button-large {
line-height: 2.30769231;
min-height: 32px;
padding: 0 12px;
}

.button:hover,
.button:focus {
background: #f1f1f1;
}

.button:focus {
background: #f3f5f6;
border-color: #007cba;
-webkit-box-shadow: 0 0 0 1px #007cba;
box-shadow: 0 0 0 1px #007cba;
color: #016087;
outline: 2px solid transparent;
outline-offset: 0;
}

.button:active {
background: #f3f5f6;
border-color: #7e8993;
-webkit-box-shadow: none;
box-shadow: none;
}

<?php
if ( 'rtl' === $text_direction ) {
echo 'body { font-family: Tahoma, Arial; }';
}
?>
</style>
</head>
<body id="error-page">

</body>
</html>
</pre><p class="wporg-dot-link-list"><a href="https://developer.wordpress.org/reference/files/wp-includes/functions.php/">View all references</a> <a href="https://core.trac.wordpress.org/browser/tags/6.9.4/src/wp-includes/functions.php#L3855">View on Trac</a> <a href="https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/functions.php#L3855-L4043">View on GitHub</a></p></section>

<section class="wp-block-wporg-code-reference-related" data-nosnippet="true"><h2 id="related" class="is-toc-heading wp-block-heading has-heading-5-font-size" tabindex="-1" ><a href="#related">Related</a></h2> <section style="margin-top:var(--wp--preset--spacing--20)" class="wp-block-wporg-code-table" id="uses"><figure class="wp-block-table "><table><thead><tr><th scope="col">Uses</th><th scope="col">Description</th></tr></thead><tbody><tr class=""><td><a href="https://developer.wordpress.org/reference/functions/wp_robots/">wp_robots()</a><code>wp-includes/robots-template.php

Displays the robots meta tag as necessary.

_wp_die_process_input()wp-includes/functions.php

Processes arguments passed to wp_die() consistently for its handlers.

get_language_attributes()wp-includes/general-template.php

Gets the language attributes for the ‘html’ tag.

wp_list_pluck()wp-includes/functions.php

Plucks a certain field out of each object or array in an array.

status_header()wp-includes/functions.php

Sets HTTP status header.

nocache_headers()wp-includes/functions.php

Sets the HTTP headers to prevent caching for the different browsers.

did_action()wp-includes/plugin.php

Retrieves the number of times an action has been fired during the current request.

__()wp-includes/l10n.php

Retrieves the translation of $text.

esc_url()wp-includes/formatting.php

Checks and cleans a URL.

add_filter()wp-includes/plugin.php

Adds a callback function to a filter hook.

remove_filter()wp-includes/plugin.php

Removes a callback function from a filter hook.

Show 6 moreShow less

Changelog

Version Description
3.0.0 Introduced.