私はマルチサイト用のワードプレスプラグインの中でスケジュールされたタスクで行き詰まっています。どういうわけか私が追加したアクションはトリガーされません。 wp_next_scheduled()を実行すると、タスクはスケジュールされてタイムスタンプを返しますが、アクション自体は実行されずに関数がトリガーされます。
いくつかの手がかりを与えるかもしれない情報:
コード例:
class Cronjobs
{
function Cronjobs()
{
add_action('init', array(&$this, 'add_cronjobs'));
}
function add_cronjobs()
{
add_action('update_properties_daily', array(&$this, 'do_updates'));
if(!wp_next_scheduled('update_properties_daily') )
{
wp_schedule_event( time(), 'daily', 'update_properties_daily');
}
}
function do_updates()
{
/* Do updates */
}
}
本当にこれのいくつかのwizesの助けを借りて使うことができました、ありがとう!
解決策:グローバル関数を作成し、それをカスタムアクションから呼び出します。
オブジェクトを参照している間にカスタムアクションを作成することに多少の不具合があるようです。 カスタムアクションはDBに格納されているので(私が理解している限りでは)、反対されることはありません。インスタンス化されるそしてそのためはそのメソッドを使うことができません。そのために:基本に戻り、グローバル関数を使用します。
オブジェクトへの参照を使用して、クラスの外部からadd_actionを呼び出す必要があります。例:
$cj = new Cronjobs;
add_action('update_properties_daily', array(&$cj, 'do_updates'));