私自身は、次の組み合わせを使用します。
- ワンタイムスクリプト専用の1つのファイル
- トランジェントを使用して、スクリプトが誤って複数回実行されるのを防ぎます
- 機能管理またはユーザーコントロールを使用して、スクリプトが自分で実行されるようにします。
構造
onetime.php
include-folderでファイル()を使用しますinc
。これはに含まれfunctions.php
、使用後にそこから削除されます。
include( 'inc/onetime.php' );
スクリプト自体のファイル
私にはonetime.php
私の機能f711_my_onetime_function()
に置かれます。それはどんな機能でもあり得るので。スクリプトがテストされ、正しく機能していると思います。
スクリプトの実行を制御するには、両方を使用します
機能制御
他のユーザーが誤ってスクリプトを実行するのを防ぐには:
if ( current_user_can( 'manage_options' ) ) // check for administrator rights
または
if ( get_current_user_id() == 711 ) // check if it is me - I prefer restricting the execution to me, not to all admins.
一時的な
誤ってスクリプトを複数回実行するのを防ぐため。
$transient = 'f711_my_onetime_check';
if ( !get_transient( $transient ) ) // check if the function was not executed.
私の関数でスクリプトを実行するためのファイルは次のf711_my_onetime_function()
ようになります。
$transient = 'f711_my_onetime_check';
if ( get_current_user_id() == 711 && !get_transient( $transient ) ) {
set_transient( $transient, 'locked', 600 ); // lock function for 10 Minutes
add_action( 'wp_footer', 'f711_my_onetime_function' ); // execute my function on the desired hook.
}
function f711_my_onetime_function() {
// all my glorious one-time-magic.
}
チェックが存在するかどうかを確認した直後にトランジェントを設定したのは、スクリプトが2回使用されないようにロックされた後に関数を実行するためです。
関数からの出力が必要な場合は、フッターにコメントとして出力するか、コンテンツをフィルターすることもあります。
ロックアウト時間は10分に設定されていますが、必要に応じて調整できます。
掃除
スクリプトが正常に実行された後、include
からを削除し、サーバーからfunctions.php
削除onetime.php
します。トランジェントにタイムアウトを使用したため、データベースをクリーンアップする必要はありませんが、もちろん、ファイルを削除した後にトランジェントを削除することもできます。