如何删除以特定前缀开头的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.';
}
}
?>
资源:
答案 0 :(得分:8)
您可以运行此查询:
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_' );
答案 1 :(得分: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);
}
这是保持插件代码整洁的唯一方法。