WordPress delete_option(); Возможность использования подстановочных знаков?

Как можно удалить все имена параметров в базе данных WordPress, начиная с определенного префикса?

Я бы предположил, что нам нужно указать префикс, получить все параметры, начинающиеся с этого префикса, а затем удалить каждый найденный параметр.

Вот пример префикса и функций WP для получения и удаления опций в базе.

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

Ресурсы:


person Michael Ecklund    schedule 20.12.2011    source источник


Ответы (2)


Вам нужно составить «белый список» всех переменных, которые устанавливает ваш плагин (я предполагаю, что вы смотрите на сценарий удаления плагина), а затем просто прокрутите его на другом конце, чтобы вы могли удалить их все.

Что-то такое простое, как:

// 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);
}

Это единственный способ сохранить код вашего плагина в чистоте.

person Dunhamzzz    schedule 20.12.2011

Вы можете запустить этот запрос:

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

или поместите его в функцию следующим образом:

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