Set PHP error reporting based on WordPress debug settings.

Uses three constants: `WP_DEBUG`, `WP_DEBUG_DISPLAY`, and `WP_DEBUG_LOG`. All three can be defined in wp-config.php. By default, `WP_DEBUG` and `WP_DEBUG_LOG` are set to false, and `WP_DEBUG_DISPLAY` is set to true.

When `WP_DEBUG` is true, all PHP notices are reported. WordPress will also display internal notices: when a deprecated WordPress function, function argument, or file is used. Deprecated code may be removed from a later version.

It is strongly recommended that plugin and theme developers use `WP_DEBUG` in their development environments.

`WP_DEBUG_DISPLAY` and `WP_DEBUG_LOG` perform no function unless `WP_DEBUG` is true.

When `WP_DEBUG_DISPLAY` is true, WordPress will force errors to be displayed. `WP_DEBUG_DISPLAY` defaults to true. Defining it as null prevents WordPress from changing the global configuration setting. Defining `WP_DEBUG_DISPLAY` as false will force errors to be hidden.

When `WP_DEBUG_LOG` is true, errors will be logged to debug.log in the content directory.

Errors are never displayed for XML-RPC, REST, and Ajax requests.






function wp_debug_mode() {
	 * Filters whether to allow the debug mode check to occur.
	 * This filter runs before it can be used by plugins. It is designed for
	 * non-web run-times. Returning false causes the `WP_DEBUG` and related
	 * constants to not be checked and the default php values for errors
	 * will be used unless you take care to update them yourself.
	 * @since 4.6.0
	 * @param bool $enable_debug_mode Whether to enable debug mode checks to occur. Default true.
	if ( ! apply_filters( 'enable_wp_debug_mode_checks', true ) ){

	if ( WP_DEBUG ) {
		error_reporting( E_ALL );

17 more lines...
WP Trac GitHub

Link here