何となく面倒なので管理ページ内に直書きしたくなるが、これだと安定して動作しない。(環境によって動作するしないが出てくる)
で、どうするか。もちろん 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' );
ちなみに、スタイルの読み込みもこの方法で出来ると思われる。
コメント