J'essaie de me connecter à 'nav_menu_item_args'
filter dans la méthode start_el()
à class Walker_nav_menu
:
/**
* 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 );
Voici mon 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' );
Mais je rencontre un problème lorsque j'essaie d'utiliser l'argument $item
. C'est vide. Et je suis très sûr d'appeler un menu. Le tableau $args
contient toutes les bonnes valeurs.
Alors, est-ce un bug? Ou est-ce que je fais quelque chose de mal?
Les filtres (et les actions) doivent être déclarés avec le nombre d'arguments acceptés par le rappel. c'est le quatrième paramètre de add_filter()
(1
par défaut):
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;
}
Voir add_filter()
pour référence .