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