web-dev-qa-db-fra.com

Ajouter des attributs personnalisés aux éléments de menu sans plug-in

J'essaie de trouver le meilleur moyen d'ajouter des attributs de menu personnalisés sans utiliser de plug-in. J'ai un site utilisant un thème personnalisé et je dois m'assurer qu'il est configuré lors de l'activation du thème par rapport à la nécessité de configurer un plugin.

Existe-t-il une fonction à laquelle je peux me connecter?

2
Jake Lisby

Filtre nav_menu_link_attributes:

add_filter( 'nav_menu_link_attributes', 'wpse_100726_extra_atts', 10, 3 );

function wpse_100726_extra_atts( $atts, $item, $args )
{
    // inspect $item, then …
    $atts['custom'] = 'some value';
    return $atts;
}

Cela fonctionne avec WordPress <3.6:

add_filter( 'walker_nav_menu_start_el', function( $item ) {

    $parts = explode( '>', $item );
    $out   = array ();

    foreach ( $parts as $i => $part )
    {
        if ( 0 === strpos( $part, '<a ' ) ) // a start
            $out[ $i ] = $part . ' data-foo="bar"';
        else
            $out[ $i ] = $part;
    }

    return join( '>', $out );
});
6
fuxia

c'est du beau travail. mais je veux un peu plus, en essayant mais je ne peux pas encore comprendre comment.

add_filter( 'nav_menu_link_attributes', 'wpse_100726_extra_atts', 10, 3 );

function wpse_100726_extra_atts( $atts, $item, $args )
{
    // inspect $item, then …
    $atts['data-hover'] = 'some value';
    return $atts;
}

je veux un changement de valeur pour le nom des éléments de menu. ex data-hover = "nous contacter"

0
pagol