backwards_compatibility_list = apply_filters('wu_hide_notifications_exclude_list', array( 'inject_admin_head_ads', )); $cleaner = array($this, 'clear_callback_list'); if (wu_get_isset($wp_filter, 'admin_notices')) { $wp_filter['admin_notices']->callbacks = array_filter($wp_filter['admin_notices']->callbacks, $cleaner === null ? fn($v, $k): bool => !empty($v) : $cleaner, $cleaner === null ? ARRAY_FILTER_USE_BOTH : 0); } // end if; if (wu_get_isset($wp_filter, 'all_admin_notices')) { $wp_filter['all_admin_notices']->callbacks = array_filter($wp_filter['all_admin_notices']->callbacks, $cleaner === null ? fn($v, $k): bool => !empty($v) : $cleaner, $cleaner === null ? ARRAY_FILTER_USE_BOTH : 0); } // end if; } // end hide_notifications_subsites; /** * Keeps the allowed callbacks. * * @since 2.0.0 * * @param array $callbacks The callbacks attached. * @return array */ public function clear_callback_list($callbacks): bool { if (empty($this->backwards_compatibility_list)) { return false; } // end if; $keys = array_keys($callbacks); foreach ($keys as $key) { foreach ($this->backwards_compatibility_list as $key_to_keep) { if (strpos($key, (string) $key_to_keep) !== false) { return true; } // end if; } // end foreach; } // end foreach; return false; } // end clear_callback_list; /** * Filter the WP Multisite WaaS settings to add Notifications Options * * @since 2.0.0 * * @return void */ public function add_settings() { wu_register_settings_field('sites', 'hide_notifications_subsites', array( 'title' => __('Hide Admin Notices on Sites', 'wp-ultimo'), 'desc' => __('Hide all admin notices on network sites, except for WP Multisite WaaS broadcasts.', 'wp-ultimo'), 'type' => 'toggle', 'default' => 0, 'order' => 25, )); } // end add_settings; } // end class Notification_Manager;