Wordpressプラグインでの管理メニューへの追加方法について。

Wordpressプラグイン作成時に管理メニューからの設定を行いたい場合、

add_action('plugins_loaded',
    create_function('$a', 'global $o; $o = new My_Wordpress_plugin;'));
add_action('admin_menu', array(&$o, 'show_options_page'));

としていたのだが、いつのころからかこれだと管理ツールの設定メニューに表示されなくなった。

どうも、グローバル中のadd_action()で、クラス内で指定しているメソッドを呼ぶのがうまくいかなくなったみたいで、

class My_Wordpress_plugin {
    ....
    function My_Wordpress_plugin() {
        ....
        if (is_admin()) {
            add_action('admin_menu', array(&$this, 'show_options_page'));
        }
    }
    ....
}

add_action('plugins_loaded',
    create_function('$a', 'global $o; $o = new My_Wordpress_plugin;'));

コンストラクタ内でadd_action()することで表示できるようになったのだが真の原因は不明。