2011-12-20 32 views
2

如何才能删除以特定前缀开头的WordPress数据库中的所有选项名称?WordPress delete_option();通配符功能?

我假设我们需要指定一个前缀,获取以该前缀开头的所有选项,然后删除找到的每个选项。

以下是用于获取和删除数据库中的选项的前缀和WP函数的示例。

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

资源:

回答

1

你需要做一个 “白名单” 的所有变量的插件集(我假定你正在寻找一个插件卸载脚本),然后在另一端循环,这样你就可以全部删除它们了。

事情就这么简单:

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

这是为了让你的插件代码整洁的唯一途径。

5

你可以运行此查询:

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_');