wake-up-neo.com

Warum ist das $ item-Argument des Filters 'nav_menu_item_args' leer?

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?

2

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 .

3
cybmeta