I have this function where I call a custom function through the add_action hook:

add_action('publish_post', 'custom_function');

... now it works perfectly, but the I want the custom_function to be delayed so it runs AFTER the post has been published.

BUT, if I add sleep(20) inside the custom_function it delays the post itself. What I want is the post to be published, and THEN run this function after x seconds.



1 Answer 1


publish_post is called after post is published! So, you already got covered. but if you want to run an action after a certain time of the post is published, it's better to write a cron job.

For example, if you need to run the function after 5 minutes of the post is published, you need to register a single cron event that will be triggered after 5 minutes from now (post publish)

add_action('publish_post', 'register_single_cron');

function register_single_cron($id){
  wp_schedule_single_event(tim() + 300, 'custom_function');

function custom_function(){
  //your logic goes here

Please check the api details here.

But this system has one problem, it will not be triggered until site is loaded/visited on or after the scheduled time.

  • ah, visiting the site is a strange requirement. :( any other workarounds?
    – Nimbuz
    Commented Jun 23, 2012 at 7:34
  • i do not see any easy workaround! all the alternatives i've in my mind are more complicated :s Commented Jun 24, 2012 at 4:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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