tohokuaikiのチラシの裏

技術的ネタとか。

register_activation_hookの変数のスコープではまった件

関数リファレンス/register activation hook - WordPress Codex 日本語版にもしっかり書いてあるのに・・・。

<?php
// プラグインオプションの設定画面
$some_options_keys = array('hoge_dirs' => 'カンマ区切りで設定');
register_deactivation_hook(__FILE__, 'uninstall_hook_some');
register_activation_hook(__FILE__, 'install_hook_some');
function uninstall_hook_some () {
    global $some_options_keys;
    foreach ($some_options_keys as $key=>$desc) {
        $r = delete_site_option($key);
    }
}
function install_hook_some () {
    global $some_options_keys;
    foreach ($some_options_keys as $key=>$desc) {
        $r = add_site_option($key, $desc);
    }
}

とかかいてて、なんでsite_optionがaddされないのか悩んだ・・・。deactivateの時はグローバル変数使えるから余計混乱した。WordPressぇぇぇ。