Opened 23 months ago
Last modified 23 months ago
#57589 new defect (bug)
transition_post_status hook does not fire when cron publishes scheduled post.
Reported by: | tele2rn | Owned by: | |
---|---|---|---|
Milestone: | Awaiting Review | Priority: | normal |
Severity: | normal | Version: | 6.1.1 |
Component: | Cron API | Keywords: | reporter-feedback |
Focuses: | Cc: |
Description
Ever since the most recent 6.1 update, a critical hook of ours is not firing any more.
We have a custom cache clearing plugin that clears the nginx, redis and Cloudflare cache for a bunch of our landing pages. It runs on our site when a post's status changes from from 'future' to 'publish', from 'publish' to 'trash' or when a post is originally published of updated. We use the transition_post_status hook to trigger these cache clears.
Everything was working great until the 6.1/6.1.1 updates. After the wp 6.1 update, the manual publish/update operations done directly using the wp-admin work fine, but when our cron runs to publish a scheduled post the transition_post_status hook does not fire at all.
But here is the most curious thing... the "publish_future_post" cron job is not created when we schedule a post for the future. The function check_and_publish_future_post() uses this cron job to decide what posts need to be published, but the cron job never appears in my action scheduler or in my events tab of the wp-control plugin. So that mean that the wp_publish_post() function does not run, and the filter hooks don't fire. But the post DOES publishes as expected on the wp-cron. It is beyond weird, and i cant figure it out.
Here is what I have done and tested thus far:
I have tested all of the following hooks: none of them work either:
- transition_post_status
- future_to_publish
- future_post
I am using a manual cron fired from my ubuntu server, and I have confirmed my cron is firing using an output.log, and I can also confirm that other wp-cron jobs are running as as normal.
I have tried both a conventional wget 'doing_wp_cron' and a wp-cli cron jobs, and both fail (see examples below):
- * * * * * wget -q -O - --no-check-certificate https://domain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
- * * * * * cd /path/to/www; /usr/local/bin/wp cron event run --due-now >/dev/null 2>&1
In order to get back to where we were, I have had to spin up my own cron that publishes future posts myself, so I have solved this issue on my end, but I cannot be the only one experiencing this, so I thought that I would submit this information for your review, thanks!
Change History (2)
#2
@
23 months ago
Thanks Peter, for your prompt reply.
I have installed your plugin on my local site and it failed to fire, just like my other action hooks. I then installed your plugin on a vanilla install of wp running only 2021 theme..., and your plugin did trigger the error on that site.
So I have to assume that it is a plugin or theme code conflict causing this issue. Do you have any idea what would cause a this to happen. Another action filter on the same hook? what do you think? Thanks!
Hi @tele2rn and welcome to trac!
I created a mini-plugin to test this issue and have not been able to reproduce the issue.
Running this plugin produced the expected log entries when the post was published as scheduled
Saving a scheduled post also produced the expected entries
Are you able to reproduce the issue on a WordPress install running a default theme with only the test plugin installed?