WordPress で自作プラグインの設定画面にアクションフックを引っかけたかったのですが、引っかからなかったので $hook_suffix
について調べました。
自作プラグインの設定画面で処理を走らせるため、アクションフックを引っかけようとしました。
イメージとしては以下の流れを想定しています。
options.php
経由はしないと想定そこで
このアクションフックを使おうとしました。
$hook_suffix
は該当ページの名前、とのこと。
今回は wp-admin/admin.php?myplugin_settings_submenu_page
というようなURLだったので安直に以下のように書いてみました。
function hoge()
{
echo "HOGEEEEEEEE";
}
add_action( 'admin_head-admin.php?myplugin_settings_submenu_page', 'hoge' );
が、実行されず。そもそもGETパラメータ付きの名前は許容されているのか、というところも含めて調べることにしました。
調査した結果、やはり $hook_suffix
は異なる値でした。
今回のように自作プラグインで設定画面を設けている場合は、次のようなルールになります。
toplevel_page_<メニュースラッグ>
<トップレベルのメニュー名を sanitize_title() した値>_page_<メニュースラッグ名>
今回は後者のパターンですね。そして地味に厄介なのは「トップレベルのメニュー名を sanitize_title()
した値」という部分。メニュー名はサイドバーのメニューの表示文字列なので、日本語でメニューを作ったプラグインの場合はサニタイズの結果パーセントエンコードされたものになります。
かといってここを小文字の半角英数字とハイフンのみにすると名前がよく分からないことになってしまうので微妙なところ。
例えば、メニュー名を「マイプラグイン 設定」として、サブメニューのスラッグを myplugin_settings_submenu_page
としていた場合、 $hook_suffix
は %E3%83%9E%E3%82%A4%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3-%E8%A8%AD%E5%AE%9A_myplugin_settings_submenu_page
となります。
そして、冒頭のアクションフックは次のようになります。
function hoge()
{
echo "HOGEEEEEEEE";
}
add_action( 'admin_head-%E3%83%9E%E3%82%A4%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3-%E8%A8%AD%E5%AE%9A_myplugin_settings_submenu_page', 'hoge' );
気持ち的には小文字の半角英数字とハイフンのみにしたいところですが、止む無し。
$hook_suffix
を通知バーに表示させるコード。分かりやすいのでこの表示のさせ方は良いですね。
function current_pagehook()
{
global $hook_suffix;
if( !current_user_can( 'manage_options') ) return;
echo '<div class="updated"><p>hook_suffix : ' . $hook_suffix . '</p></div>';
}
add_action( 'admin_notices', 'current_pagehook' );
※特定のWordPress管理画面でのみ独自のCSSやJavaScriptを読み込む方法 | WordPress テーマ DigiPressより
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント