Ich bin Twitter Bootstrap und muss das Attribut data-toggle = "modal" zum Tag eines Menülinks hinzufügen. Beim Durchsuchen der meisten Ergebnisse wird auf die Suche nach Twitter-Bootstrap-Dropdown-Menüs verwiesen. Dieses Menü enthält jedoch keine Dropdown-Menüs, und ich muss nur das bestimmte Attribut hinzufügen.
Als nächstes fand ich Folgendes : Hinzufügen von benutzerdefinierten Attributen zu Menüelementen ohne Plug-In, was sehr hilfreich ist, da es in WordPress 3.6+ nicht mehr lange komplexe Walker benötigt und stattdessen verwendet werden kann: http://codex.wordpress.org/Plugin_API / Filter_Reference / nav_menu_link_attributes
Zum jetzigen Zeitpunkt ist diese API-Referenz jedoch recht einfach und enthält keine Beispiele. Da sie so neu ist, gibt es bei Google nur sehr wenige Verweise darauf.
Ich habe das zuerst versucht:
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;
}
und das funktioniert, aber es fügt erwartungsgemäß das Attribut zu allen a-Tags im Menü hinzu. Also versuche ich herauszufinden, wie man einen Menüpunkt mit # menu-item-7857 a oder so ansteuert.
Weiß jemand, wo er ein Beispiel für die Ausrichtung auf ein Menüelement finden oder feststellen kann, wie er sich auf die Informationen stützen kann, die in der oben verlinkten API-Referenz enthalten sind?
Ich habe das folgende Beispiel gefunden, aber es zielt nur auf Elemente mit untergeordneten Elementen ab, was nicht hilfreich ist, aber möglicherweise in die richtige Richtung weist:
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);
UPDATE (AKTUALISIERUNG) - Die einzige Antwort unten klingt so, als sei sie auf etwas gerichtet, aber es konnte nicht festgestellt werden, wie die Nummer für die Ausrichtung auf einen bestimmten Link tatsächlich gefunden werden kann und wo / wie diese Bedingung in einem funktionierenden Beispiel hinzugefügt werden soll. Kommentar hinzugefügt, aber nicht zurückgehört. Seit ungefähr 18 Tagen dachte ich, ich würde sehen, ob ein Kopfgeld helfen würde.
Wenn ich mir den Code für den Link ansehe, auf den ich abzielen möchte:
<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>
Ich sehe die Nummer 7858 und denke, das ist vielleicht die Nummer, auf die ich zielen sollte.
Aber wenn ich zum Beispiel versuche:
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;
}
}
Wenn ich jedoch die if-Anweisung hinzufüge, die der Kommentator vorgeschlagen hat, erhalte ich den folgenden Fehler:
Fatal error: Cannot use object of type WP_Post as array
Ich gehe davon aus, dass mehr Code benötigt wird, aber verloren geht. Zur Erinnerung, ohne die if-Anweisung funktioniert es, aber es zielt auf alle Links und nicht auf den einen Link, auf den ich zielen möchte.
Antworten:
Spezielles Bearbeiten des Codes, den Sie in der ursprünglichen Frage angegeben haben:
quelle
array_key_exists()
Das zweite
$item
Argument, das Ihrer Filterfunktion zur Verfügung gestellt wird, enthält ein Menüelementobjekt. Wenn es abgeladen ist, sieht es ungefähr so aus:Um einen bestimmten Menüpunkt anzusprechen, müssen Sie Ihre Bedingung formulieren und mit den im Objekt verfügbaren Daten vergleichen
if ( 2220 == $item['ID'] )
quelle
$item
es sich um ein Objekt handelt, nicht um ein Array. ändere den$item['ID']
auf$item->ID
.Warum nähern Sie sich diesem Problem nicht aus einer anderen Richtung? Anstatt zu versuchen, den Menüpunkt mit id == ?? Verwenden Sie den WP Admin-Bereich, um dem Menüelement, auf das Sie abzielen möchten, eine benutzerdefinierte Klasse hinzuzufügen . Verwenden Sie dann diese Klasse in Ihrem Javascript, um die benötigten Informationen auszulösen:
Mein Javascript ist nicht garantiert. Wenn Sie nicht jQuery verwenden, könnten Sie versuchen , diese .
quelle
Ich wollte dem benutzerdefinierten Menü, das ich in WordPress erstellt hatte, Datenbuchstaben hinzufügen.
Die Schritte, die ich gewählt habe, waren:
Hier ist mein Code.
Hoffe das hilft dir.
quelle