wp_die 是 WordPress 的错误提示页面,也是对 PHP die 函数的增加函数,可以完全替代 die。
但是默认的页面样式可能不适合你的主题,也不好看,作为一个WordPress页面,当然是可以用钩子修改的,用到的钩子为“wp_die_handler”。
/**
* wp_die_handler 钩子过滤器
*
* @since 1.0.0
* @param mixed $die_handler
* @return mixed
*/
function io_wp_die_handler_filter($die_handler){
if (is_admin()) {
return $die_handler;
}
return 'io_die_beauty_html';
}
add_filter( 'wp_die_handler', 'io_wp_die_handler_filter' );
/**
* 重写wp_die页面模版
*
* 内容样式请自行修改,保留die()函数
* @since 1.0.0
* @author iowen
* @link https://www.iowen.cn/customizeandbeautifythewp_diepageofwordpress
* @param string $message
* @param string $title
* @param array $args
*/
function io_die_beauty_html($message, $title, $args){
get_header();
?>
<main id="main" class="container my-5 py-3" role="main">
<article class="die-error shadow-lg" style="background: #fff;padding: 20px;max-width: 500px;margin: auto;border-radius: 12px;text-align: center;">
<header class="die-header">
<h1 class="die-title text-hide"><?php echo $title; ?></h1>
</header>
<i class="iconfont icon-crying text-64"></i>
<div class="die-content mt-4" style="background: #ffefef;color: #ca3f3f;border-radius: 8px;padding: 10px;">
<?php echo $message ?>
</div>
</article>
</main>
<?php
get_footer();
die();
}
将上面的代码放到主题functions.php文件里,css样式可能需要自行调整
wp_die介绍
wp_die( string|WP_Error $message = ”, string|int $title = ”, string|array|int $args = array() )
终止 WordPress 执行并显示带有错误消息的 HTML 页面。
说明
该函数是对 die()
PHP 函数的补充。不同之处在于会向用户显示 HTML 页面。建议仅在执行过程不应继续时使用该函数。不建议频繁调用此函数,而应尽量以无声或更优雅的方式处理更多错误。
作为一种速记方法,所需的 HTTP 响应代码可以整数形式传递给 $title
参数(默认标题将适用)或 $args
参数。
参数
$message
string | WP_Error 可选- 错误消息。如果这是
WP_Error
对象,而不是 Ajax 或 XML-RPC 请求,则使用WP_Error
的错误消息。默认:
''
$title
string | int 可选- 错误标题。如果
$message
是WP_Error
对象,则带有'title'
键的错误数据可用于指定标题。
如果 $title 是整数,则将其视为响应代码。默认:
''
$args
string | array | int 可选用于控制行为的参数。如果
$args
是整数,则将其视为响应代码。response
intHTTP响应代码。Ajax请求默认为200,否则为500。link_url
string要包含链接的 URL。只能与 $link_text 结合使用。
默认为空字符串。link_text
string要包含的链接的标签。只能与 $link_url 结合使用。
默认为空字符串。back_link
bool是否包含返回链接。默认为 false。text_direction
string文本方向。这只在内部有用,当WordPress仍在加载并且站点的区域设置尚未设置时。接受'rtl'
和'ltr'
。
默认值为is_rtl()的值。charset
stringHTML输出的字符集。默认值'utf-8'
。code
string要使用的错误代码。默认值为'wp_die'
,如果$message是wp_error,则为主要错误代码。exit
bool完成后是否退出流程。默认为true。
默认:
array()
wp_die_handler
为 wp_die()
提供的钩子,还有其他钩子
// Ajax 请求
apply_filters( 'wp_die_ajax_handler', callable $callback )
// non-Ajax, non-JSON, non-XML 请求
apply_filters( 'wp_die_handler', callable $callback )
// JSONP REST 请求
apply_filters( 'wp_die_jsonp_handler', callable $callback )
// JSON 请求
apply_filters( 'wp_die_json_handler', callable $callback )
// XML-RPC 请求
apply_filters( 'wp_die_xmlrpc_handler', callable $callback )
// XML 请求
apply_filters( 'wp_die_xml_handler', callable $callback )