web-dev-qa-db-fra.com

wp_schedule_event dans une classe

Ceci est mon plugin (dépouillé), en POO:

<?php
/*
Plugin Name: Cron Test
Plugin URI: http://www.mywebsite.com/
Description: Test
Version: 1.0
Requires at least: 3.0
*/

class CronTest {
  public function __construct() {
      if ( !wp_next_scheduled( 'dailyops' ) ) {
          wp_schedule_event( time(), 'daily', 'dailyops' );
      }
      add_action( 'dailyops', array($this, 'do_this_daily') );
  }

  function do_this_daily() {
          // do something every day
          error_log('daily');
  }
}

$cronTest = new CronTest();

Quoi qu'il en soit, cela ne fonctionne pas (do_this_daily () n'est jamais renvoyé). J'ai essayé la même chose dans un plugin non-POO (non basé sur une classe) et cela fonctionne parfaitement. Comment puis-je le faire fonctionner ici, en classe?

EDIT: J'ai remplacé la partie initiale du code par un plugin complet (encore minimal) pouvant être testé.

5
flip79

Enfin, j'ai découvert ce qui n'allait pas: le serveur Web (un VPS dédié) avait une mauvaise configuration du domaine hébergé, il était donc incapable de le "contacter", d'appeler wp-cron.php.

Je l'ai corrigé et maintenant chaque travail planifié fonctionne, y compris celui-ci :)

1
flip79