web-dev-qa-db-ja.com

プラグインのアンインストール:特定のプレフィックスを持っているのオプションを削除します

目的

すべてのプラグイン開発者として、同じプレフィックスで始まるすべてのオプションを削除したいと思います。

裏話

私はオプションにデータを保存するプラグインを開発しました。ユーザーがプラグインをアンインストールすると、プラグインの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 );
}
5
Nate Allen