From aef5ef26cd11d613d277af64d5bb56263279ba1c Mon Sep 17 00:00:00 2001 From: John Blackbourn Date: Tue, 3 Nov 2020 17:34:20 +0000 Subject: [PATCH] Docs: Add more information about how to use filters that run before WordPress initialises. Fixes #50134 git-svn-id: https://develop.svn.wordpress.org/trunk@49489 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/class-wp-hook.php | 23 ++++++++++++++++++++++- src/wp-includes/error-protection.php | 21 +++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/wp-includes/class-wp-hook.php b/src/wp-includes/class-wp-hook.php index e2c9cf2368..5f9fa2fb83 100644 --- a/src/wp-includes/class-wp-hook.php +++ b/src/wp-includes/class-wp-hook.php @@ -356,9 +356,30 @@ final class WP_Hook implements Iterator, ArrayAccess { /** * Normalizes filters set up before WordPress has initialized to WP_Hook objects. * + * The `$filters` parameter should be an array keyed by hook name, with values + * containing either: + * + * - A `WP_Hook` instance + * - An array of callbacks keyed by their priorities + * + * Examples: + * + * $filters = array( + * 'wp_fatal_error_handler_enabled' => array( + * 10 => array( + * array( + * 'accepted_args' => 0, + * 'function' => function() { + * return false; + * }, + * ), + * ), + * ), + * ); + * * @since 4.7.0 * - * @param array $filters Filters to normalize. + * @param array $filters Filters to normalize. See documentation above for details. * @return WP_Hook[] Array of normalized filters. */ public static function build_preinitialized_hooks( $filters ) { diff --git a/src/wp-includes/error-protection.php b/src/wp-includes/error-protection.php index c1393045be..379b470171 100644 --- a/src/wp-includes/error-protection.php +++ b/src/wp-includes/error-protection.php @@ -111,6 +111,27 @@ function wp_is_fatal_error_handler_enabled() { /** * Filters whether the fatal error handler is enabled. * + * **Important:** This filter runs before it can be used by plugins. It cannot + * be used by plugins, mu-plugins, or themes. To use this filter you must define + * a `$wp_filter` global before WordPress loads, usually in `wp-config.php`. + * + * Example: + * + * $GLOBALS['wp_filter'] = array( + * 'wp_fatal_error_handler_enabled' => array( + * 10 => array( + * array( + * 'accepted_args' => 0, + * 'function' => function() { + * return false; + * }, + * ), + * ), + * ), + * ); + * + * Alternatively you can use the `WP_DISABLE_FATAL_ERROR_HANDLER` constant. + * * @since 5.2.0 * * @param bool $enabled True if the fatal error handler is enabled, false otherwise.