Ich benutze für mich eine Kombination aus:
- Eine Datei für das einmalige Skript
- Verwenden eines Transienten, um zu verhindern, dass das Skript versehentlich mehr als einmal ausgeführt wird
- Verwenden des Capability-Managements oder der Benutzerkontrolle, um sicherzustellen, dass das Skript nur von mir ausgeführt wird.
Struktur
Ich verwende eine Datei ( onetime.php) in meinem Include-Ordner inc, die in der enthalten functions.phpist und von dort nach der Verwendung gelöscht wird.
include( 'inc/onetime.php' );
Die Datei für das Skript selbst
In meinem ist onetime.phpmeine Funktion f711_my_onetime_function()platziert. Da könnte es jede Funktion sein. Ich gehe davon aus, dass Ihr Skript getestet wurde und ordnungsgemäß funktioniert.
Um die Kontrolle über die Ausführung des Skripts zu erlangen, verwende ich beide
Fähigkeitskontrolle
So verhindern Sie, dass andere Benutzer versehentlich mein Skript ausführen:
if ( current_user_can( 'manage_options' ) ) // check for administrator rights
oder
if ( get_current_user_id() == 711 ) // check if it is me - I prefer restricting the execution to me, not to all admins.
eine vorübergehende
um mich davon abzuhalten, das Skript versehentlich mehr als einmal auszuführen.
$transient = 'f711_my_onetime_check';
if ( !get_transient( $transient ) ) // check if the function was not executed.
Die Datei zum Ausführen des Skripts in meiner Funktion f711_my_onetime_function()würde folgendermaßen aussehen:
$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.
}
Der Grund, warum ich den Transienten unmittelbar nach der Prüfung auf Vorhandensein gesetzt habe, ist, dass die Funktion ausgeführt werden soll, nachdem das Skript für die zweimalige Verwendung gesperrt wurde.
Wenn ich eine Ausgabe von meiner Funktion benötige, drucke ich sie entweder als Kommentar in der Fußzeile aus oder filtere manchmal sogar den Inhalt.
Die Sperrzeit ist auf 10 Minuten eingestellt, kann aber an Ihre Bedürfnisse angepasst werden.
Aufräumen
Nach der erfolgreichen Ausführung meines Skripts lösche ich das includeaus functions.phpund entferne das onetime.phpvom Server. Da ich für den Übergang eine Zeitüberschreitung verwendet habe, muss die Datenbank nicht bereinigt werden. Natürlich können Sie den Übergang auch löschen, nachdem Sie die Datei entfernt haben.