如何在WordPress插件后台页面屏蔽更新通知及其他通知?
问题与解决方案
你在插件主PHP文件添加的代码未生效,且尝试的CSS无法彻底屏蔽所有后台通知,问题出在以下几点及对应修复方案:
一、PHP错误处理函数失效原因及修复
你的tiketwp_handle_php_errors函数绑定了init钩子,且调用时错误添加了命名空间前缀(函数实际是全局定义,未在TiketWP\twppwr命名空间内),导致钩子无法找到对应函数。此外,init钩子执行时机偏晚,部分早期PHP错误可能已经触发,建议改用更早的执行方式:
修正代码(直接在插件文件开头执行,优先级最高)
function tiketwp_handle_php_errors() { // 关闭PHP错误显示 ini_set('display_errors', 0); // 将错误记录到文件 ini_set('log_errors', 1); ini_set('error_log', WP_CONTENT_DIR . '/php_errors.log'); // 设置错误报告级别 error_reporting(E_ALL); } tiketwp_handle_php_errors();
若需使用钩子(改用更早的plugins_loaded)
function tiketwp_handle_php_errors() { ini_set('display_errors', 0); ini_set('log_errors', 1); ini_set('error_log', WP_CONTENT_DIR . '/php_errors.log'); error_reporting(E_ALL); } add_action('plugins_loaded', 'tiketwp_handle_php_errors');
二、屏蔽所有后台通知的有效方法
你原有的disable_plugin_update_notification仅移除了核心更新提示(update_nag),无法覆盖插件/主题更新通知、其他插件的自定义通知,以下是两种彻底屏蔽的方案:
方案1:PHP禁用通知生成(从根源阻止)
function disable_all_admin_notices() { // 移除所有通知钩子的回调 remove_all_actions('admin_notices'); remove_all_actions('user_admin_notices'); remove_all_actions('network_admin_notices'); // 阻止插件/主题更新通知的生成 add_filter('site_transient_update_plugins', '__return_null'); add_filter('site_transient_update_themes', '__return_null'); add_filter('auto_update_plugin', '__return_false'); add_filter('auto_update_theme', '__return_false'); } // 在通知生成前执行钩子 add_action('admin_init', 'disable_all_admin_notices');
方案2:CSS强制隐藏所有通知(样式层面覆盖)
原CSS选择器优先级不足,需用更具体的选择器并添加!important:
.notice, .notice-warning, .notice-error, .notice-success, .notice-info, .update-nag, .updated, .error { display: none !important; }
可通过PHP动态注入到后台页面:
function hide_all_admin_notices_css() { echo '<style> .notice, .notice-warning, .notice-error, .notice-success, .notice-info, .update-nag, .updated, .error { display: none !important; } </style>'; } add_action('admin_head', 'hide_all_admin_notices_css');
内容的提问来源于stack exchange,提问作者János
相关产品推荐
相关产品推荐

