*/ class Wp_Hide_Backed_Notices_Admin { private $plugin_name; private $version; private $option_name = 'manage_warnings_notice'; public function __construct($plugin_name, $version) { $this->plugin_name = $plugin_name; $this->version = $version; add_action('admin_menu', array($this, 'add_custom_menu_in_dashboard')); } public function add_custom_menu_in_dashboard() { add_menu_page( __('Hide Notices', 'wp-hide-backed-notices'), __('Hide Notices', 'wp-hide-backed-notices'), 'manage_options', 'manage_notices_settings', array($this, 'warning_notices_settings'), plugin_dir_url(__FILE__) . 'images/hide-dash-menu.png', 100 ); } public function warning_notices_settings() { if ( ! current_user_can( 'manage_options' ) ) { return; } $active_tab = isset($_GET['tab']) ? sanitize_key($_GET['tab']) : 'settings'; if (isset($_POST['save_notice_box']) && check_admin_referer('save_settings_nonce', 'save_settings_nonce_field')) { $input = isset($_POST['hide_notice']) ? $_POST['hide_notice'] : array(); $clean_data = array(); foreach ($input as $key => $value) { $clean_data[sanitize_text_field($key)] = sanitize_text_field($value); } update_option($this->option_name, $clean_data); echo '

' . esc_html__('Settings Saved.', 'wp-hide-backed-notices') . '

'; } $posts_from_db = $this->get_options(); ?>

'; do_action('admin_notices'); echo '
'; } ?>
option_name, array() ); if ( ! is_array( $options ) ) { $options = maybe_unserialize( $options ); } if ( ! is_array( $options ) ) { $options = array(); } return $options; } private function render_toggle($key, $label, $options) { $db_key = str_replace(' ', '_', $key); $is_checked = (in_array($key, $options) || isset($options[$db_key])) ? 'checked' : ''; echo '

' . esc_html($label) . '

'; echo ''; } public function enqueue_styles() { wp_enqueue_style($this->plugin_name . '-admin', plugin_dir_url(__FILE__) . 'css/wp-hide-backed-notices-admin.css', array(), $this->version); $custom_css = $this->generate_hiding_css(); if ($custom_css) { wp_add_inline_style($this->plugin_name . '-admin', $custom_css); } } public function enqueue_scripts() { wp_enqueue_script($this->plugin_name . '-admin', plugin_dir_url(__FILE__) . 'js/wp-hide-backed-notices-admin.js', array('jquery'), $this->version, false); } private function generate_hiding_css() { $user = wp_get_current_user(); // NEW: Check if the current user is excluded via filter if ( apply_filters( 'whbn_exclude_user_from_hiding', false, $user->ID ) ) { return ''; } $user_roles = (array) $user->roles; $options = $this->get_options(); if (empty($options)) return ''; $should_hide = false; foreach ($user_roles as $role) { if (isset($options[$role]) || in_array($role, $options)) { $should_hide = true; break; } } if (in_array('administrator', $user_roles) && (isset($options['administrator']) || in_array('administrator', $options))) { $should_hide = true; } if (!$should_hide) return ''; $css = ''; if (isset($options['Hide_Updates']) || in_array('Hide Updates', $options)) { $css .= 'body.wp-admin .update-plugins, body.wp-admin .awaiting-mod, body.wp-admin #wp-admin-bar-updates { display: none !important; }'; } if (isset($options['Hide_Notices']) || in_array('Hide Notices', $options)) { $css .= 'body.wp-admin #wp-admin-bar-seedprod_admin_bar, body.wp-admin .update-nag, body.wp-admin .updated, body.wp-admin .error, body.wp-admin .is-dismissible, body.wp-admin .notice, #yoast-indexation-warning { display: none !important; }'; $css .= 'body.wp-admin #loco-content .notice, body.wp-admin #loco-notices .notice { display: block !important; }'; } if (isset($options['Hide_PHP_Updates']) || in_array('Hide PHP Updates', $options)) { $css .= '#dashboard_php_nag { display: none !important; }'; } return $css; } }