Opened 11 years ago
Closed 9 years ago
#26235 closed enhancement (wontfix)
Add action when _fix_attachment_links fires
Reported by: |
|
Owned by: | |
---|---|---|---|
Milestone: | Priority: | normal | |
Severity: | normal | Version: | 3.7 |
Component: | Administration | Keywords: | has-patch |
Focuses: | Cc: |
Description
There are sometimes circumstances under which it would be useful to fire an action when _fix_attachment_links()
fires, since it does a wp_update_post()
right after another wp_update_post()
has run. For example, say you want to run an action on save_post
exactly once per post update. If a given post has attachments that need fixing, the save_post
action will fire twice.
The addition of an action within _fix_attachment_links()
would allow plugins to know that the call to wp_update_post()
was a second call and to remove any actions that shouldn't fire a second time.
A real life scenario: My site hooks onto publish_post
and initiates some async processes (email subscription notifications, for example). When a post needs its attachments updated, these processes execute twice, causing fun things like duplicate emails. So I need a way to make sure the events that fire on publish_post
fire exactly once even if the update itself executes more than once. I thought adding an action might be the proper way forward. Patch attached.
A sample use case:
function skip_async_publish_post_if_fixing_attachment_links() { remove_action( 'publish_post', 'queue_publish_post', 10, 2 ); } add_action( '_fix_attachment_links', 'skip_async_publish_post_if_fixing_attachment_links' );
Attachments (2)
Change History (7)
#3
@
11 years ago
I tried this and you're right that it works well for one-off publishing of posts, but it'll fail for things like imports and batch updates. For that matter, I think my fix would fail in that case as well, so I'll need to think this through some more.
#4
@
11 years ago
I've come up with another approach. It requires the addition and removal of a filter, which I suspect still won't fly, but nothing ventured nothing gained. It may be better to name the filter more generically (something like "doing_secondary_wp_update_post" so that it could be used more readily in other contexts as well.
Just want to restate that it's not my intention to modify core just to meet my use case. I can always hack my local core if I really need to (though would prefer not to). It just seems plausible that there might be other use cases for which something along these lines would be useful as well.
#5
@
9 years ago
- Milestone Awaiting Review deleted
- Resolution set to wontfix
- Status changed from new to closed
If you're worried about attachments in publish_post you can just check the post type of the post being passed in. An attachment is of the attachment post type.
Further, you can also use the did_action function.
This doesn't seem like something that more than a handful of people would use.
Closing as wontfix
You can just call
remove_action()
in your current function attached topublish_post
. This use case doesn't require a new hook.