我自己使用以下组合:
- 一个专门用于一次性脚本的文件
- 使用瞬态来阻止脚本意外运行超过一次
- 使用功能管理或用户控制来确保脚本仅由我运行。
结构体
我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.
}
我在检查瞬态是否存在后立即设置瞬态的原因是,我希望函数在脚本被锁定后不被蜂鸣两次使用后才能执行。
如果我需要函数的任何输出,我可以将其作为注释打印在页脚中,有时甚至可以过滤内容。
锁定时间设置为10分钟,但可以根据需要进行调整。
清理
成功执行脚本后,我include
从中删除functions.php
,然后onetime.php
从服务器中删除该。当我为过渡使用超时时,我不需要清理数据库,但是当然您也可以在删除文件后删除过渡。