【WordPress】アクションフックやフィルターフックが実行されないとき、優先順序を調整してみる
アクションフックやフィルターフックをfunctions.phpに追加するとき、記述内容は合っているはずものの反映されない時があります。
例えばfunctions.phpに、 「管理者以外は、WordPress管理画面の上部にある管理バーのWordPressロゴとコメントを非表示にする」 こんな記述を追加するとします。
function hogehoge() {
if( is_admin() ){
global $wp_admin_bar;
if( !current_user_can('administrator') ){
$wp_admin_bar->remove_menu( 'wp-logo' );
$wp_admin_bar->remove_menu( 'comments' );
}
}
}
add_action( 'admin_bar_menu', 'hogehoge' );
記述内容そのものは正しいのですが、これだけでは反映されず、管理バーにはWordPressロゴとコメントが表示されたままです。
第三引数$priorityから、関数を実行する優先順序を調整してみる
アクションフック・フィルターフックには、第三引数に$priorityというのがあります。 これは、関数を実行する優先順序を指定します。数値が少ないほど優先度が高く、早く実行されます。 ※同じ優先度を持つ関数の場合、追加された順序で実行されます。
$priorityの初期値は「10」になります。 試してみたところ、10以下の数値では記述が反映されませんでした。
なのでここは優先順位を落としてみると、無事にWordPressロゴとコメントを非表示にする事ができました。
add_action( 'admin_bar_menu', 'hogehoge', 99 );
記述内容そのものは間違っていない(エラーが出ない)はずなのに、なぜかWordPressに反映されないといった状態のときには、アクションフック・フィルターフックの第三引数から優先順序を調整してみると、想定通りに挙動するかもしれません。