'nav_menu_item_args'
メソッドのstart_el()
の class Walker_nav_menu
filterにフックしようとしています。
/**
* Filters the arguments for a single nav menu item.
*
* @since 4.4.0
*
* @param stdClass $args An object of wp_nav_menu() arguments.
* @param WP_Post $item Menu item data object.
* @param int $depth Depth of menu item. Used for padding.
*/
$args = apply_filters( 'nav_menu_item_args', $args, $item, $depth );
これが私のコードです:
function filter_nav_menu_item_args($args, $item, $depth)
{
if ($args->menu->slug == 'countries')
{
$args->link_before = print_r($item, true); // <-- Outputs nothing
}
return $args;
}
add_filter('nav_menu_item_args', 'filter_nav_menu_item_args' );
$item
引数を使おうとすると問題が生じます。空っぽです。そして私はメニューを呼んでいると確信しています。 $args
配列には、正しい値がすべて含まれています。
だから、これはバグですか?それとも私は何か悪いことをしていますか?
フィルタ(およびアクション)は、コールバックによって受け入れられた引数の数で宣言される必要があります。これはadd_filter()
の4番目のパラメータです(デフォルトは1
)。
add_filter( 'nav_menu_item_args', 'filter_nav_menu_item_args', 10, 3 );
function filter_nav_menu_item_args( $args, $item, $depth ) {
print_r( $item );
return $args;
}
参照先として add_filter()
を参照してください 。