wp_get_nav_menu_items
フィルタフックでメニューを変更するときに、メニューがどのテーマの配置に対応しているかを判断する方法はありますか?
特定のメニューにのみ項目を追加したいのですが、メニューのIDや名前に頼る必要はありません。
これが最も簡単な方法であることはわかりませんが、wp_nav_menu_args
が呼び出されたときにwp_nav_menu
フィルターを介して変更したい場所だけに条件付きでフィルターを追加し、その後すぐにフィルターを削除して他のメニューに適用しないようにできます。
function wpa108544_nav_menu_args( $args ){
// check if it's the location we want the filter applied to
if( 'primary' == $args['theme_location'] )
add_filter( 'wp_get_nav_menu_items', 'wpa108544_get_nav_menu_items', 10, 3 );
return $args;
}
add_filter( 'wp_nav_menu_args', 'wpa108544_nav_menu_args' );
function wpa108544_get_nav_menu_items( $items, $menu, $args ){
// remove the filter
remove_filter( current_filter(), __FUNCTION__, 10, 3 );
// do your menu manipulation stuff here
}