Ratko Solaja
Ratko Solaja

Reputation: 173

WP Cron in Plugin

I've been using this WP plugin boilerplate for some time and now I have a problem that I can't seem to solve, so I would appreciate any help.

In includes there's a file called class-plugin-name-activator.php and in it there's a class called Plugin_Name_Activator and a public static function called activate.

I've added wp_schedule_event, like this:

wp_schedule_event( time(), 'daily', 'rs_license_daily_event' );

... in the activate function. Also, I've added two public static functions after activate functions, the first one is calling the other. Let's say the first function name is rs_license_do_daily_event.

Now, I need to use add_action like this:

add_action( 'rs_license_daily_event', 'rs_license_do_daily_event' );

How can I do it so it works?

Also, I'm using a plugin called WP Crontrol to test run the cron manually so I can see if it works.

Upvotes: 1

Views: 505

Answers (1)

Goran Jakovljevic
Goran Jakovljevic

Reputation: 2820

Inside public static function activate add:

public static function activate() {

        $timestamp = wp_next_scheduled( 'rs_license_daily_event' );

        if($timestamp == false) {
            wp_schedule_event( time(), 'daily', 'rs_license_daily_event' );
        }
}

then in admin or public part add: (public part example)

private function define_public_hooks() {

        $plugin_public = new Plugin_Name_Public( $this->get_plugin_name(), $this->get_version() );
        $this->loader->add_action( 'rs_license_daily_event', $plugin_public, 'rs_license' );

    }

and finaly in public class add that method:

public function rs_license() {
  // do stuff
}

Thats it.

Upvotes: 4

Related Questions