WordPress delete_option(); 通配符能力?

4

如何删除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.';
    }
}
?>

Resources:

3个回答

9
您可以运行以下查询:
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_' );

2
你需要制作一个“白名单”,列出插件设置的所有变量(我假设你正在查看插件卸载脚本),然后在另一端循环遍历它,以便可以删除它们。
可以使用如下简单的代码: ```php foreach ($whitelist as $var) { delete_option($var); } ``` 请注意保留HTML标签。
// 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);
}

这是保持插件代码整洁的唯一方法。


0
将“myplugin_”替换为您的前缀:
global $wpdb;

$plugin_options = $wpdb->get_results( "SELECT option_name FROM $wpdb->options WHERE option_name LIKE 'myplugin_%'" );

foreach( $plugin_options as $option ) {
    delete_option( $option->option_name );
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接