[wp-trac] [WordPress Trac] #24299: 'save_post' action is a common bottleneck
WordPress Trac
noreply at wordpress.org
Thu May 9 22:00:05 UTC 2013
#24299: 'save_post' action is a common bottleneck
-----------------------------+------------------------------------
Reporter: johnjamesjacoby | Owner:
Type: enhancement | Status: new
Priority: low | Milestone: Awaiting Review
Component: Post Types | Version:
Severity: normal | Keywords: has-patch dev-feedback
-----------------------------+------------------------------------
When reviewing code, I see almost daily that the 'save_post' action is
used as a catch-all for saving post-meta from inside custom metaboxes. The
problem with this approach is that 'save_post' runs even on internal post-
types, like revisions, nav-menu items, auto-saves, etc...)
It's my experience that most developers have no idea that their code runs
in these circumstances, and they often don't check the post_type of the
post being saved, resulting in unnecessary calls to update_post_meta() and
sometimes storing useless information in the database.
This issue becomes especially prevalent on sites with complex navigation
menus, where sometimes hundreds of calls to 'save_post' can occur. The
added overhead of bbPress and a few other CPT based plugins installed can
ramp these wasted comparisons up into the thousands very quickly.
Yes... this can largely be considered an education issue. And $post is
passed into 'save_post' so it's a simple comparison check to make sure the
post_type matches your intentions. There's also transition_post_status
that allows even more control.
Knowing this, I think there's still value in addressing this in core, by
having a dedicated "save_post_$post_type" action directly after
'save_post'. It's straight-forward, easy to tweak existing code, and
provides a simple way to avoid repeated loops through 'save_post' just to
compare a post_type and bail a bunch of times.
Patch attached for proof of concept
--
Ticket URL: <http://core.trac.wordpress.org/ticket/24299>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software
More information about the wp-trac
mailing list