【WordPress】add_menu_pageする前に、メニューの存在チェックをする

  • 投稿 : 2020-11-29

やり方

if ( empty ( $GLOBALS['admin_page_hooks']['my_unique_slug'] ) )
    add_menu_page(
        'Page Title',
        'Top Menu Title',
        'manage_options',
        'my_unique_slug',
        'my_magic_function'
    );

https://wordpress.stackexchange.com/questions/119281/check-if-add-menu-page-exists-or-not

何年も前からやり方を知りたくて、放置してたのですが、英語で検索するとズバリが見つかったのでメモしておきます。

補足

1.add_menu_page で管理画面にメニューを追加
2.add_submenu_pageで、そのメニューに子メニューを追加

上記の手順で、親メニューと子メニューは簡単に追加できます。

複数のプラグインで、1つの親メニューに、各プラグインごとに子メニューにしたいという場合があるかと思います。

この場合に、親メニューが存在しないと、子メニューを追加しても表示されません。で、親メニューを毎回追加すると、メニューの「slug」が同じなのに、メニューが追加のたびに増殖していってしまいます。

処理としては、親メニューの存在チェックをして、存在しなければ親メニューを追加してから、子メニュー追加。存在してる場合は、子メニューだけ追加という処理をするわけです。

スポンサーリンク