前提
WordPressで定期的な処理を実装しています。
テスト用に以下のログ出力イベントを登録しました。
php
1add_action( 'wp', 'prefixsetupschedule' ); 2function prefixsetupschedule() { 3 if ( ! wp_next_scheduled( 'prefixhourlyevent' ) ) { 4 wp_schedule_event(time(), 'hourly', 'prefixhourlyevent'); 5 } 6} 7 8add_action( 'prefixhourlyevent', 'prefixdothishourly' ); 9function prefixdothishourly() { 10 error_log('prefixdothishourly を実行しました'); 11}
###発生している問題
現在開発中のためアクセスを自宅のIPアドレスに限定しています。
それが次のコードですが、これがあると上記のCron処理が起動しなくなることがわかりました。
php
1add_action( 'init', 'allow' ); 2function allow() { 3 $getip = $_SERVER["HTTP_X_FORWARDED_FOR"] ?? ''; 4 5 // 許可されたIPアドレス 6 $whiteLists = [ 7 '222.222.222.22', // 開発中のため自宅だけ許可 8 ]; 9 10 // 許可されたIPアドレスでないならアクセスを禁止 11 if( !in_array($getip, $whiteLists, true) ){ 12 wp_die('アクセスが許可されていません'); 13 } 14}
###試したこと
このallow()
に問題があるなら、$whiteLists
に「Cronの処理過程で使われるIPアドレス」を追加すれば問題は起こらないかもしれないと考えました。
で管理画面から下記のようにサーバーのIPアドレスを確認し
このIPアドレスを次のように$shiteLists
に追加しました
php
1 // 許可されたIPアドレス 2 $whiteLists = [ 3 '222.222.222.22', // 開発中のため自宅だけ許可 4 '111.111.111.11', // さらにCron用にサーバーのIPアドレスも許可 → これでは問題は解決せず 5 ];
が、これでは問題は解決せずやはりCronは起動しないままでした。
###質問
そこでタイトルの質問となりました。
つまり上記allow()
は「許可されたIPアドレスならOK」としていますが、それに加えて「Cronの処理過程ならOK」としたらどうかと思い、その判定方法をお尋ねしたという経緯です。
要はallow()
を下記のように変更し、$is_cron_access
に「Cronの処理過程かどうか」を持たせたいと考えています。
php
1add_action( 'init', 'allow' ); 2function allow() { 3 $getip = $_SERVER["HTTP_X_FORWARDED_FOR"] ?? ''; 4 5 // 許可されたIPアドレス 6 $whiteLists = [ 7 '222.222.222.22', // 開発中のため自宅だけ許可 8 '111.111.111.11', // さらにCron用にサーバーのIPアドレスも許可 → これでは問題は解決せず 9 ]; 10 11 // ここでCronの処理過程ならtrueと判定したい 12 $is_cron_access = ''; 13 14 // 許可されたIPアドレスでなく、Cronの処理過程でもないならアクセスを禁止 15 if( !in_array($getip, $whiteLists, true) && !$is_cron_access ){ 16 wp_die('アクセスが許可されていません'); 17 } 18}
目的はサイトの閲覧を自身に限定している現在の状況に加え、Cronの処理も実現したい。ということになりますので、もしallow()
を上のように変更する以外にもいい方法がありましたら是非教えていただけませんでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/14 05:55 編集
2020/11/14 05:58
2020/11/14 06:22
2020/11/14 06:31
2020/11/14 06:35
2020/11/14 06:36
2020/11/14 06:51
2020/11/14 09:05 編集
2020/11/14 09:43