web-dev-qa-db-ja.com

プラグインの実行中に一時停止するためにWPコアメンテナンスモードを使用できますか?

私は別のプラグインによって作成された数百の投稿を手動で(管理ボタンプッシュ)削除するためのプラグインを書きました。その他のプラグインは外部APIに基づいて投稿を作成します。

削除の途中でAPIプラグインが新しい投稿を作成し始めている状況に陥っています。

削除が実行されている間、サイト上の他のすべての実行を一時停止するためにわずか数秒間WPのコアメンテナンスモードを使用する方法があるのでしょうか。

私はupdate-core.phpとupdate.phpを見ましたが、メンテナンスモードの開始と終了のために何をしているのかは私には明らかではありませんでした。メンテナンスモードを設定する機能とメンテナンスモードを解除する機能があることを願っていましたが、表示されていません。この競合状態を回避するために他の方法にも開放してください。

2
jb510

それはあなたのWordPressインスタンスのルートに.maintenanceファイルを作成することによって簡単に行うことができます。あなたのスクリプトは次のようになります。

// create maintenance file before starting the long lasting process
file_put_contents( ABSPATH . '.maintenance', '<?php $upgrading = ' . time() . ';' );

// do stuff ...

// after finishing working on your stuff remove maintenance file
unlink( ABSPATH . '.maintenance' );

WordPressはメンテナンスファイルがルートに存在するかどうかをチェックし、存在する場合は$upgrading変数をチェックして10分間だけメンテナンスメッセージを表示します。

デフォルトでは、WordPressはメンテナンスモード中に標準のメッセージを表示します。内容は次のとおりです。

Briefly unavailable for scheduled maintenance. Check back in a minute.

独自のスクリプトを実行して独自のメンテナンス出力を生成したい場合は、wp-contentフォルダ内にmaintenance.phpファイルを作成できます。 WordPressはファイルが存在する場合はそのファイルをロードし、ファイルを呼び出した後にプロセスの実行を停止します。

3
Eugene Manuilov