---
title: "How to Suppress Deprecation Notices in WordPress Using an MU Plugin"
date: 2025-10-08
author: "Shiv"
featured_image: "https://malcure.com/wp-content/uploads/2025/10/wordpress-debug-suppress-deprecations.jpg"
categories:
  - name: "Code, CLI & Utilities"
    url: "/blog/utilities.md"
---

# How to Suppress Deprecation Notices in WordPress Using an MU Plugin

When WordPress debugging is enabled, it logs **all PHP errors, warnings, and notices**, often including numerous **deprecation notices** from outdated code or third-party plugins. These can clutter your debug log, making it hard to locate the critical issues. This guide shows you how to create a must-use (MU) plugin to suppress `E_DEPRECATED` and `E_USER_DEPRECATED` notices while logging significant errors, resulting in cleaner, more actionable logs.

## Step 1: Create the MU Plugin

Must-use (MU) plugins are automatically activated by WordPress and run early, making them ideal for configuring error reporting. To set up the plugin:

1. Navigate to `/wp-content/` in your WordPress installation.
2. Create a folder named `mu-plugins` if it doesn’t already exist.
3. Create a file named `custom-error-handler.php` in `/wp-content/mu-plugins/` and add the following code:

```
/**
 * Custom Error Handler for WordPress
 * 
 * This MU plugin configures PHP error reporting to control which error types
 * are displayed/logged during WordPress execution.
 * 
 * @package WordPress
 * @subpackage MU-Plugins
 */

add_action(
   'muplugins_loaded',
   function ( $a = false ) {
   
    /**
     * Configure PHP Error Reporting
     * 
     * ERROR TYPES INCLUDED (Reported):
     * - E_ERROR (1): Fatal run-time errors that halt execution. Example: "Fatal error: Call to undefined function some_function()"
     * - E_WARNING (2): Non-fatal run-time warnings, script continues. Example: "Warning: Division by zero"
     * - E_PARSE (4): Compile-time parse/syntax errors. Example: "Parse error: syntax error, unexpected '}'"
     * - E_NOTICE (8): Run-time notices for minor issues. Example: "Notice: Undefined variable: user_name"
     * - E_CORE_ERROR (16): Fatal errors during PHP startup. Example: "Fatal error: Allowed memory size exhausted"
     * - E_CORE_WARNING (32): Warnings during PHP startup. Example: "Warning: PHP Startup: Unable to load dynamic library"
     * - E_COMPILE_ERROR (64): Fatal compile-time errors. Example: "Fatal error: Cannot redeclare class"
     * - E_COMPILE_WARNING (128): Non-fatal compile-time warnings
     * - E_USER_ERROR (256): User-generated fatal errors via trigger_error()
     * - E_USER_WARNING (512): User-generated warnings via trigger_error()
     * - E_USER_NOTICE (1024): User-generated notices via trigger_error()
     * - E_STRICT (2048): Forward compatibility suggestions. Example: "Strict Standards: Declaration should be compatible"
     * - E_RECOVERABLE_ERROR (4096): Catchable fatal errors. Example: "Catchable fatal error: Argument must be instance of User"
     * 
     * ERROR TYPES EXCLUDED (Suppressed):
     * - E_DEPRECATED (8192): Notices about deprecated PHP/WordPress functions. Suppressed to avoid noise from legacy code
     * - E_USER_DEPRECATED (16384): User-generated deprecation notices. Suppressed to avoid third-party plugin warnings
     */
    error_reporting(
        E_ALL                    // Report all error types (value: 32767 - includes all flags)
        & ~E_DEPRECATED          // EXCEPT deprecated function notices (8192) - suppressed for legacy compatibility
        & ~E_USER_DEPRECATED     // EXCEPT user-defined deprecation notices (16384) - suppressed to reduce log noise
    );
    return $a;
   },
   PHP_INT_MAX, // Ensure our hook runs last
   1
);

```

## Step 2: How It Works

The MU plugin uses the `muplugins_loaded` action hook to configure PHP’s error reporting early in the WordPress execution process, before other plugins or themes load. The `error_reporting()` function is set to:

- Log all error types `E_ALL`, including fatal errors `E_ERROR`, parse errors `E_PARSE`, warnings `E_WARNING`, and notices `E_NOTICE`.
- Suppress `E_DEPRECATED` and `E_USER_DEPRECATED` notices, which are common in legacy code or third-party plugins and often clutter logs.

This ensures that only significant errors are logged to `/wp-content/debug.log`, making it easier to focus on issues that affect your site’s functionality.

## Step 3: Enable WordPress Debugging

To log errors to a file, add or update the following lines of code in your `wp-config.php` (located in the root of your WordPress installation):

```
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false); // Prevents errors from appearing on the frontend

```

These settings save errors to `/wp-content/debug.log`. You can monitor the log in real-time using a command like `tail -f wp-content/debug.log` in your terminal. Ensure the `/wp-content/` directory is writable by your server.

This MU plugin streamlines WordPress debugging by **suppressing deprecation notices**, allowing you to focus on critical errors and troubleshoot your site more effectively.