web-dev-qa-db-fra.com

Comment puis-je ajouter du texte à un élément de menu de navigation unique?

Je travaille sur un thème qui demande à l'utilisateur final de spécifier la saison de performances en cours à l'aide d'un panneau d'administration personnalisé que j'ai créé, c'est-à-dire. "2013/2014", "2014/2015" etc., que je peux récupérer à l'aide de get_option('current_season');

Sur mon menu de navigation personnalisé, j'ai une page intitulée "Saison" dans laquelle le champ susmentionné doit être inséré, de sorte qu'elle indique "Saison 2013/2014" plutôt que simplement "Saison".

Les tutoriels que j'ai examinés sur les marcheurs semblent ne montrer que des exemples d’ajout d’une classe aux éléments de menu, mais j’ai besoin d’ajouter du texte spécifique à un élément de menu. Comment puis-je atteindre cet objectif?

1
JMac

Vous pouvez essayer le filtre wp_nav_menu_objects. Cela semble fonctionner, mais vous ne voulez pas tester les autres effets secondaires, vous devrez faire un test approfondi.

function wpa_filter_nav_menu_objects( $items ){
    foreach( $items as $item ){
        if( 'Season' == $item->title ){
            $item->title = get_option('current_season') . ' Season';
        }
    }
    return $items;
}
add_filter( 'wp_nav_menu_objects', 'wpa_filter_nav_menu_objects' );
0
Milo

La plupart des balises d’éléments de menu sont générées dans Walker_Nav_Menu->start_el()

Le titre traverse le filtre dans cette partie du code:

$item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;

Donc, le filtre the_title devrait vous permettre de le modifier. Cependant, il est quelque peu difficile à mettre en œuvre avec précision et dépend de vos spécificités, car WP utilise le même filtre dans la fonction get_the_title() pour les titres en général.

0
Rarst