delay function on publish?

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

add_action('publish_post', 'custom_function');

Read More

… 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.

Thanks!

Related posts

Leave a Reply

1 comment

  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.