管理画面に特定のスクリプトを読み込む

何となく面倒なので管理ページ内に直書きしたくなるが、これだと安定して動作しない。(環境によって動作するしないが出てくる)

で、どうするか。もちろん wp_enqueue_script() を使うのだが、問題はどこにフックするか。

admin_enqueue_scriptsだ。

ただし、普通にフックすると全管理ページにロードされてしまい、場合によっては迷惑をかけてしまう。

で、どうするか。

アクションで渡ってくるパラメータ$hookを調べて、自分のページでない場合ブロックする。その$hookなのだが、調べてみると分かるが、おかしな命名規則(?)で渡ってくる。

自分のページがhoge-menuならば、toplevel_page_hoge-menuという具合だ。ここは癖がある。

というわけで、コードは以下のようになる。


function hoge_load_custom_wp_admin_style($hook) {
        // Load only on ?page=mypluginname
        if($hook != 'toplevel_page_hoge-menu') {
                return;
        }
        wp_enqueue_script( 'hoge_wp_admin_js', get_template_directory_uri().'/js/myscript.js' , array('jquery') );
}
add_action( 'admin_enqueue_scripts', 'hoge_load_custom_wp_admin_style' );

ちなみに、スタイルの読み込みもこの方法で出来ると思われる。

コメント

タイトルとURLをコピーしました