すべてのプラグイン開発者として、同じプレフィックスで始まるすべてのオプションを削除したいと思います。
私はオプションにデータを保存するプラグインを開発しました。ユーザーがプラグインをアンインストールすると、プラグインのuninstall.php
が次のコードを実行します。
if ( !defined( 'WP_UNINSTALL_PLUGIN' ) ) {
exit;
}
delete_option( 'myplugin_some_opt_1' );
delete_option( 'myplugin_some_opt_2' );
delete_option( 'myplugin_some_opt_3' );
delete_option( 'myplugin_some_opt_4' );
すべてのオプションがmyplugin_
で始まるので、私はワイルドカードを実装したいです。論理的に、私はそれがこのように見えると思います:
if ( !defined( 'WP_UNINSTALL_PLUGIN' ) ) {
exit;
}
delete_option( 'myplugin_*' );
wp_load_alloptions()
関数を使ってすべての利用可能なオプションを取得し、次にmyplugin_
という接頭辞を持つすべてのオプションに対してdelete_option()
を使用することで、別の方法を見つけました。
foreach ( wp_load_alloptions() as $option => $value ) {
if ( strpos( $option, 'myplugin_' ) === 0 ) {
delete_option( $option );
}
}
"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 );
}