有没有办法可以设置 WordPress 失败通知页面的样式?看看下面的屏幕截图,它显示了一个页面示例。该页面是在不同时间和出于各种原因生成的。要生成页面,请在浏览器中打开 2 个选项卡,然后在每个选项卡上登录到同一个 WordPress 站点。
1:通过您打开的第一个选项卡退出站点。
2:通过第二个选项卡注销。
您将看到失败页面。
我采用的方法是设置一个自定义 die 处理程序,它使您可以选择设置所有“die”消息的样式。
// custom die handler
function get_custom_die_handler() {
return 'custom_die_handler';
}
// hook the function
add_filter('wp_die_handler', 'get_custom_die_handler' );
// build a custom die handler
function custom_die_handler( $message, $title = '', $args = array() ) {
// whatever you want the die handler to do
}
导航到文件/wp-includes/functions.php
查找名为的函数
wp_nonce_ays
那就是输出错误页面的函数。那是一个核心函数,由 的动作调用check_admin_referer
。您可以尝试参与该操作;唯一的问题是它被调用die
后wp_nonce_ays
,所以 usingadd_action
没有任何效果,因为它在触发之前就死了。但是,幸运的是,check_admin_referer
它是一个可插入的函数,因此您可以创建一个函数来覆盖它。我们的函数将是一个精确的副本,check_admin_referer
只是添加了一行额外的代码来设置它的样式。保存该函数,我将其命名为 styleFailPage.php,并将其放在您的/wp-content/plugins/
文件夹中。
<?php /*
* Plugin Name:Failure Styler
* Description:Adds a style element right before the failure notice is called
*/
if ( ! function_exists( 'wp_logout' ) ) {
function check_admin_referer($action = -1, $query_arg = '_wpnonce') {
if ( -1 == $action )
_doing_it_wrong( __FUNCTION__, __( 'You should specify a nonce action to be verified by using the first parameter.' ), '3.2' );
$adminurl = strtolower(admin_url());
$referer = strtolower(wp_get_referer());
$result = isset($_REQUEST[$query_arg]) ? wp_verify_nonce($_REQUEST[$query_arg], $action) : false;
if ( !$result && !(-1 == $action && strpos($referer, $adminurl) === 0) ) {
//this is the line I added:
echo "<style>body {background:red !important;}</style>";
wp_nonce_ays($action);
die();
}
do_action('check_admin_referer', $action, $result);
return $result;
}
}
?>
这将使 HTML 无效,因为您最终必须<style>
在 doctype 声明上方插入信息,但是 AFAIK 如果不显式编辑核心wp_nonce_ays
功能,这是不可避免的