2011-12-20 34 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_');