Je suis Twitter Bootstrap et j'ai besoin d'ajouter l'attribut data-toggle = "modal" à la balise a du lien de menu. Lors de la recherche de la plupart des résultats, faites référence à une marche pour les menus déroulants Twitter Bootstrap, mais ce menu n'a pas de listes déroulantes et j'ai seulement besoin d'ajouter l'attribut particulier.
Ensuite, j'ai trouvé ceci: Ajoutez des attributs personnalisés aux éléments de menu sans plugin, ce qui est très utile car il apparaît dans WordPress 3.6+, nous n'avons plus à faire de longs marcheurs complexes et à la place, nous pouvons utiliser ceci: http://codex.wordpress.org/Plugin_API / Filter_Reference / nav_menu_link_attributes
Cependant, à partir de cette exécution, cette référence API est assez nue et n'offre aucun exemple et comme elle est si nouvelle, il y a très peu de références à elle sur Google.
J'ai essayé ceci en premier:
add_filter( 'nav_menu_link_attributes', 'mywp_contact_menu_atts', 10, 3 );
function pb_contact_menu_atts( $atts, $item, $args )
{
// inspect $item, then …
$atts['data-toggle'] = 'modal';
return $atts;
}
et cela fonctionne cependant comme prévu, ajoute l'attribut à toutes les balises a du menu. J'essaie donc de comprendre comment cibler un élément de menu avec # menu-item-7857 a or such.
Quelqu'un sait-il où trouver un exemple de ciblage d'un élément de menu ou est-il capable de déterminer comment se baser sur les informations contenues dans la référence d'API liée ci-dessus?
Pour noter, j'ai trouvé l'exemple suivant mais il ne cible que les articles qui ont des enfants, ce qui n'aide pas mais peut être dans la bonne direction:
add_filter('nav_menu_link_attributes', function($atts, $item, $args) {
if ( $args->has_children )
{
$atts['data-toggle'] = 'dropdown';
$atts['class'] = 'dropdown-toggle';
}
return $atts;
}, 10, 3);
MISE À JOUR - La seule réponse ci-dessous semble être sur quelque chose, mais elle n'a pas pu déterminer comment trouver réellement le numéro pour cibler mon lien spécifique et où / comment ajouter ce conditionnel dans un exemple de travail. Ajout d'un commentaire mais sans réponse. Depuis environ 18 jours, je pensais voir si une prime aiderait.
Quand je regarde le code du lien que je veux cibler:
<li id="menu-item-7858" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-7858"><a href="#" data-toggle="modal">Chat</a></li>
Je vois le numéro 7858 alors je pense que c'est peut-être le numéro que je devrais viser.
Mais quand j'essaye par exemple:
add_filter( 'nav_menu_link_attributes', 'my_chat_menu_atts', 10, 3 );
function my_chat_menu_atts( $atts, $item, $args ) {
if ( 7857 == $item['ID'] ) {
// inspect $item, then …
$atts['onclick'] = 'SnapEngage.startLink();';
return $atts;
}
}
Cependant, en ajoutant que si la déclaration, l'un des commentateurs a suggéré que j'obtienne l'erreur suivante:
Fatal error: Cannot use object of type WP_Post as array
Je suppose que plus de code est requis mais perdu. Pour rappel, sans l'instruction if, cela fonctionne, mais il cible tous les liens plutôt que le lien que je veux cibler.
Réponses:
Modification spécifique du code que vous avez fourni dans la question d'origine:
la source
array_key_exists()
Le deuxième
$item
argument, qui est mis à la disposition de votre fonction de filtre, contient un objet d'élément de menu. S'il est vidé, il ressemble à ceci:Pour cibler un élément de menu spécifique, vous devez formuler votre condition et la comparer aux données disponibles dans l'objet, par exemple
if ( 2220 == $item['ID'] )
la source
$item
c'est un objet, pas un tableau; changer le$item['ID']
en$item->ID
.Pourquoi n'abordez-vous pas ce problème dans une direction différente? Plutôt que d'essayer de cibler l'élément de menu avec id == ?? qui pourrait changer à un moment donné (l'élément de menu, pas l'identifiant), utilisez la zone Admin WP pour ajouter une classe personnalisée à l'élément de menu que vous souhaitez cibler. Utilisez ensuite cette classe dans votre Javascript pour déclencher les informations dont vous avez besoin:
Mon javascript n'est pas garanti. Si vous n'utilisez pas jQuery, vous pouvez essayer ceci .
la source
Je voulais ajouter des lettres de données au menu personnalisé que j'avais créé dans WordPress.
Les étapes que j'ai choisies étaient:
Voici mon code.
J'espère que cela vous aidera.
la source