WordPressのアクションフックでadmin_headをadmin.phpなにがしに限定するには?

主にWordPress用のプラグインを作成して、WP管理画面にさらにプラグイン専用の設定ページなんてのを用意したいときがある。
GPLとかで配布されているAjax系のJavascriptなどを取り入れてちまちまやっていたが、ここへ来て問題が。。
WordPressのテーマ変更画面では、本来テーマのサムネイルをクリックするとiframeでプレビュー表示してくれるのは周知のことだが、自分の作ったプラグインが有効だと、iframeが無効になってそのページでいきなりプレビュー表示されてしまう。
なんじゃこりゃとFireFoxのエラーコンソールとかFireBugなんかで調べてたら、どうもヘッダーに定義したあるjavascriptの読み込みでエラーが発生していたらしく、テーマ選択ページではその後に読み込まれるはずだったプレビュー用のスクリプトがスルーされてるためにiframe表示ができていなかったらしい。
プラグインで管理画面のHTMLヘッダーには
1 | add_action('admin_head', '関数名'); |
などとやっていたので、WordPressの管理画面のheader全てに私のプラグインのjavascriptを読み込んでいた。
で、調べてみたところ、アクションフックは「admin_head-」以外にも
admin_head-ページフック名
要素内で実行する。
admin_head-プラグイン管理ページ名
プラグインが生成した管理画面ページの
なんていうのがあり、ヘッダー内に出力するページを限定できることが分かった。
「プラグイン管理ページ」や「ページフック名」というのが例もなく何とも分かりにくいが、プラグイン専用ページだったら
1 | admin_head-wptouch/wptouch.php |
というように、プラグインディレクトリからのパスを「admin_head-」の後に記述すればいいらしい。
同様に、管理画面の特定のページでは、
1 | admin_head-post-new.php |
のように、「wp-admin」の後の*.phpを記述すればいいらしいが、ここで困った。。
/wp-admin/admin.php のときの指定ができない!!
私のプラグインの場合、管理画面のサイドバーに個別の専用メニューを設けたため、パスは「/wp-admin/admin.php?page=フック名」
となっている。
この場合のページフック名ってどうするんだ?!
この記事のトラックバックURL
add_action(‘admin_head-toplevel_page_ページフック名’, ‘function’);
でどうですか?
[...] 調べてみると同じような事を考えていらっしゃる方がいた。良かった。方向性は分かった! [...]
大変参考にさせて頂きました!
ところでせっかくなので情報共有です。
プラグイン管理ページ名ですが、私の環境では『「admin_head-settings_page_」+「プラグインdir名」+「/」+「プラグインファイル名(拡張し無し)」』でした。
詳しくは コチラに書いておきましたので、よろしければご参照ください。