Opened 10 months ago

Last modified 8 months ago

#21321 reopened enhancement

Remove is_null() checks in apply_filters(), do_action(), et al.

Reported by: nacin Owned by: nacin
Priority: normal Milestone: Future Release
Component: Performance Version:
Severity: normal Keywords:
Cc:

Description

In apply_filters(), do_action(), and friends, there is a check for ! is_null( $the['function'] ). As these functions get called collectively thousands of times per page, a tiny check like this can add up.

A few months ago, I decided to track it down. They were shuffled around a bit in [4955], but they actually had roots in [1394]. The link there (http://www.kackreiz.net/wordpress.php) is dead, but I found it at http://www.kackreiz.net/wordpress/apply_filters.html#fixed, via http://wordpress.org/support/topic/bug-in-remove_filterapply_filters?replies=3.

The original bug was that remove_filter() left NULL's in the $wp_filter array, rather than properly unsetting it as it was modified to do long ago. Now that we no longer leave NULL scattered about, this check is safe to remove.

Change History (5)

This requires either #21169 or a change to remove_filter().

  • Owner set to nacin
  • Resolution set to fixed
  • Status changed from new to closed

In [21287]:

Remove unnecessary is_null() checks from the worker loops inside do_action(), apply_filters(), etc. fixes #21321. see #21169.

In [21299]:

Revert [21287] until #21169 goes through. see #21321.

  • Resolution fixed deleted
  • Status changed from closed to reopened

Some side effects here, due to our janky current() loop and self-removal of actions. see [UT935]

  • Milestone changed from 3.5 to Future Release
Note: See TracTickets for help on using tickets.