WordPressのプラグインの後始末

WordPressのプラグインの後始末プラグインをアンインストールした後、データベースの「options」テーブルの掃除することが習慣になって来ている。

掃除と言っても、プラグインによってデータベースに書き込まれたデータを削除しているだけだが。

最近、偶然に、

http://WordPressのURL/wp-admin/options.php

にアクセスすると、「すべての設定」というページが表示され、「options」テーブルに格納されたデータの一覧を見ることが出来る事を知った。

シリアル化されていないものについては、データの更新も出来るようだが、残念ながら削除は出来ない。

WordPress上から「options」テーブルの掃除が出来れば掃除も楽になるが、phpMyAdminを使うしかなさそうだ。

そこで、WordPressの管理画面からMySQLを管理できるプラグインは無いかと探してみたところ、「Adminer」と言うプラグインが見つかった。

Adminer」は、phpMyAdminのようなMySQLの管理ツールで、それをプラグイン化したものらしい。

高機能なツールなのだが、「options」テーブルを掃除したいだけなので、もっとシンプルな機能のもので十分なのだが・・・。

さて、今回の話題は、以前からプラグインの利用者としても開発者としても気になっていたが、最近、Twitterでも話題になったようだ。

私の作成したプラグインもそうであるが、WordPress用のプラグインの多くが、データベース上に設定値などを格納している。

例えば、アクセス解析プラグインのログなど、頻繁に書き込みや更新が発生するようなデータは、データベース上に独自のテーブルを作成し、そこにデータを格納しているのが通例だが、対して、設定値など頻繁に書き込みや更新が行われないデータであれば「add_option()」を使って、データベース上の「options」テーブルに保存している事が多い。

WordPress DBのoptionsテーブル

プラグインを使っている間は、これらデータベースに格納された値は、なんら問題にならない。むしろ、動作に必要である。

ところが、プラグインが不用になり、一旦アンインストールしてしまうと、データベース上のゴミと化す場合も少なくない。

アンインストール時にデータベースの「options」デーブルに追加した値を削除してくれれば良いのだが、そうではない行儀の悪いプラグインも多い。

開発者なら知っていることだが、add_option()で追加されたデータは、delete_option()で簡単に削除できる。

要はタイミングの問題で、プラグインのアンインストール時にdelete_option()を実行出来れば、ゴミを残すこともなくなる。

勿論、その方法は用意されており、プラグインのアンインストール時にdelete_option()を実行したいのなら、下記の様に記述した「uninstall.php」ファイルを作成し、プラグインファイルに含めるだけで良い。

<?php
if (!defined('ABSPATH') && !defined('WP_UNINSTALL_PLUGIN')) {exit();}
delete_option('my_plugin_option1');
delete_option('my_plugin_option2');
delete_option('my_plugin_option3');
	.
	.
	.
?>

「uninstall.php」が実行される前に「WP_UNINSTALL_PLUGIN」が定義されているかは、確認したほうが良いようなので上記のような記述になっている。

また、現在は使われていなが、過去のバージョンで使用して値がある場合は、それも記述した方が良い。

同様の処理を「register_uninstall_hook()」を使って実行させる方法もあるが、私のプラグインの場合は、「uninstall.php」を使っている。

アンインストール時の処理とは関係ないが、プラグインが有効化された時、無効化された時の処理を記述する場合は、「register_activation_hook()」、「register_deactivation_hook()」が利用出来るので覚えてくと役立つかもしれない。

しかし、「uninstall.php」や「register_uninstall_hook()」は、WordPress 2.7からの新機能のようなので、もっと古いバージョンでも動作するプラグインの場合は、別の方法をとる必要があるかもしれない。

と言え、開発者にアンインストール時の処理が浸透するまでは、データベースの「options」テーブルの掃除から解放されそうにはない。

様々なプラグインのデータを格納している「options」テーブル自体、雑居ビルのような状態であるため、不要なものを探すだけでも一苦労である。



PHP, WordPress, ネット・PC, , , Permalink