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); } 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); } } /** * 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; } $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; } } } return false; } /** * 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, ) ); } }