7

When I use:

define('WP_DEBUG', 1);

In my wp-config.php, it works fine, but I am hacking an old theme and I would like to suppress deprecated notices.

My understanding is that adding this:

error_reporting( E_ERROR | E_NOTICE | E_PARSE )

Should do the trick. I have added it to wp-config.php and to header.php in my theme. Unfortunately, it has no effect. Is this something set at server level? Also the following makes no difference as well:

ini_set('display_errors', 1);

As asked in the comments below here's a couple of the notices. I am using a hacked version of the Construct 2 theme, quite old now but it would not be safe to update it. I am trying to persuade the client to let me rewrite it, the site is fairly simple, but as he can't see anything wrong, it's not broken, he won't spend the money.

Deprecated: Assigning the return value of new by reference is deprecated in /Volumes/Macintosh HD/Sites/MAMP (custodian)/wordpress/wp-content/themes/construct2/option-tree/ot-loader.php on line 369

Strict Standards: Declaration of DropDown_Nav_Menu::start_lvl() should be compatible with Walker_Nav_Menu::start_lvl(&$output, $depth = 0, $args = Array) in /Volumes/Macintosh HD/Sites/MAMP (custodian)/wordpress/wp-content/themes/construct2/dropdown-menus.php on line 192

4
  • 1
    in which file appears the first notice ?
    – mmm
    Sep 16, 2016 at 10:31
  • May you display the depreciated notice you are getting? This will help me give you a better answer Sep 16, 2016 at 14:04
  • See above added to original post
    – Chris Pink
    Sep 18, 2016 at 9:55
  • @ChrisPink From my experience when working with an older WordPress install, I would put the code I provided in my answer to both the ot-loader.php and dropdown-menus.php file. Sep 18, 2016 at 14:37

2 Answers 2

5

As mmm stated:

in which file appears the first notice?

Wherever the notice is mentioning the location of this deprecated function (path/to/some/file.php), you would insert the following just below the <?php tag which starts off the file:

error_reporting(0);

I've tried the above functions you mentioned and inserted them in my wp-config.php when I experience something similar, but they didn't work for me. This will turn off warning, deprecated, and everything else except the errors.

4
  • Interesting (ie showing the shallowness of my understanding, inserting error_reporting(0); (or any other variation) in the first of the files mentioned in the long list of error messages suppresses all messages from subsequent different files but not the deprecated notice in that file
    – Chris Pink
    Sep 18, 2016 at 10:04
  • @ChrisPink I don't entirely understand your last comment, may you please clarify? Sep 18, 2016 at 14:33
  • Sorry, I didn't explain very well. Inserting error_reporting(0) into the file ot-loader.php (as per message in the OP) suppressed all subsequent notices but not the one originating from ot-loader.php (the one in the OP). So I am guessing I need to insert the error_reporting() function into the file that calls ot-loader.php.
    – Chris Pink
    Sep 20, 2016 at 7:35
  • @ChrisPink Yes, insert that code in ot-loader.php. Sep 20, 2016 at 17:50
2

I was able to suppress notices in the log and displayed errors by using the error_reporting function in a must-use plugin, which is loaded early enough to catch most of the WP core code warnings. This is helpful for the warnings coming from core/plugin files that you shouldn't modify.

I created a php file in the /wp-content/mu-plugins/ folder with this code:

<?php 
error_reporting(E_ALL & ~E_WARNING & ~E_DEPRECATED & ~E_USER_DEPRECATED & ~E_NOTICE);
?>
1
  • Thank you, this worked for me!
    – Azamat
    Feb 9 at 23:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.