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

wp
主に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

コメント(3件)

  1. wp より:

    add_action(‘admin_head-toplevel_page_ページフック名’, ‘function’);
    でどうですか?

  2. [...] 調べてみると同じような事を考えていらっしゃる方がいた。良かった。方向性は分かった! [...]

  3. 大変参考にさせて頂きました!

    ところでせっかくなので情報共有です。
    プラグイン管理ページ名ですが、私の環境では『「admin_head-settings_page_」+「プラグインdir名」+「/」+「プラグインファイル名(拡張し無し)」』でした。

    詳しくは コチラに書いておきましたので、よろしければご参照ください。

コメントを残す

メールアドレスが公開されることはありません。

*


次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>