WordPress delete_option(); Wildcard-Fähigkeit?

Lesezeit: 1 Minute

Benutzer-Avatar
Michael Ecklund

Wie würde man vorgehen, um alle Optionsnamen in einer WordPress-Datenbank zu löschen, die mit einem bestimmten Präfix beginnen?

Ich würde davon ausgehen, dass wir ein Präfix angeben, alle Optionen abrufen müssen, die mit diesem Präfix beginnen, und dann jede gefundene Option löschen müssen.

Hier ist ein Beispiel für die Präfix- und WP-Funktionen zum Abrufen und Löschen von Optionen in der Datenbank.

<?php
$prefix = 'cpt_';
$getOpt = get_option($prefix);
foreach($getOpt as $toDelete){
    $deleteOpt = delete_option($prefix);
    if(!$deleteOpt){
        echo 'Failure.';
    }
    if($deleteOpt){
        echo 'Success.';
    }
}
?>

Ressourcen:

Sie könnten diese Abfrage ausführen:

global $wpdb;
$wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE 'cpt_%'" );

oder setzen Sie es in eine Funktion wie folgt:

function delete_options_prefixed( $prefix ) {
    global $wpdb;
    $wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE '{$prefix}%'" );
}
delete_options_prefixed( 'cpt_' );

Sie müssen eine “Whitelist” aller Variablen erstellen, die Ihr Plugin setzt (ich nehme an, Sie sehen sich ein Plugin-Deinstallationsskript an), und schleifen Sie es dann einfach am anderen Ende durch, damit Sie sie alle löschen können.

Etwas so Einfaches wie:

// Somewhere in your plugin, maybe as a class property
$pluginDefinedOptions = array('my_name', 'my_created', 'my_modified'); // etc

// Clear up our settings
foreach($pluginDefinedOptions as $optionName) {
    delete_option($optionName);
}

Nur so bleibt dein Plugin-Code ordentlich.

1311710cookie-checkWordPress delete_option(); Wildcard-Fähigkeit?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy