前提・実現したいこと
WordPressのwp_schedule_event
関数を使って自動でプラグインをアップデートする関数を実行させたいです
その際、もしエラーが出たときの判断をしたいです
該当のソースコード
php
1/** 2 * 1日1回実行する関数 アクセスが無ければ実行されない 3 */ 4function cron_auto_function() { 5 /** 6 * プラグインをアップデートする 7 */ 8 exec( 'wp plugin update --all' , $output, $return_var); 9 if ( $return_var !== 0 ){ 10 $result = 'false'; 11 } 12 return $result; 13} 14add_action ( 'auto_cron', 'cron_auto_function' ); 15 16/** 17 * イベントの実行 18 */ 19if ( !wp_next_scheduled( 'auto_cron' ) ) { 20 wp_schedule_event( time(), 'daily', 'auto_cron' ); 21} 22 23//これではこの関数を呼出した瞬間にアップデートが毎回走ってしまう 24if ( cron_auto_function() == 'false' ) { 25 exit(); 26}
exec関数の返り値にfalseをもたせてみたのですがこれでは関数を呼び出した瞬間にアップデートが走ってしまうのでこれを一日一度行いたいです
wp_schedule_eventではwp_errorの引数をもたせることも出来るようですがこれはイベントのセットした場合になってしまいそのフック(今回であれば'auto_cron')が実行されたときではないので上手く行かないです
https://runebook.dev/ja/docs/wordpress/functions/wp_schedule_event
もしお心優しい方いましたらアドバイスいただければ幸いです
私が思いつく実装方法
- 関数が正常に実行されたらテーブルに値を代入する
- フックが正常に動作したかどうかを判断する関数を見つける
- exit やreturnなどで関数の実行を止める
この辺りかなと思うのですがいい関数や形はありますでしょうか?
あなたの回答
tips
プレビュー