Ich versuche mich in 'nav_menu_item_args'
Filter in Methode start_el()
in class Walker_nav_menu
einzuhängen:
/**
* 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 );
Hier ist mein Code:
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' );
Beim Versuch, das Argument $item
zu verwenden, treten jedoch Probleme auf. Es ist leer. Und ich bin mir sehr sicher, dass ich ein Menü rufe. Das $args
-Array enthält alle richtigen Werte.
Also, ist das ein Bug? Oder mache ich etwas falsch?
Filter (und Aktionen) müssen mit der Anzahl der vom Rückruf akzeptierten Argumente deklariert werden. Es ist der vierte Parameter von add_filter()
(Standard 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;
}
Siehe add_filter()
als Referenz .