Wie haben Sie einen Menüeintrag auf oberster Ebene, der keine Verknüpfung hat, aber Untermenüs enthält, die verknüpft sind?

Ich baue ein horizontales Menü und einige der Einträge in diesem Menü haben Dropdown-Menüs (Untermenüs), andere nicht. Diejenigen, die Untermenüs haben, sind keine Seiten. Sie sind nur dazu gedacht, Anleitungen für die Drop-downs zu geben.

Nehmen wir zum Beispiel an, dass das horizontale Menü wie folgt aussieht:

Startseite | Über uns | Produkte | Wegbeschreibung | Kontakt

Und der “products” li-Artikel soll 3 Seiten in einer vertikalen Dropdown-Liste darunter verknüpft haben, so dass “Produkte” selbst keine Seite darstellt, wie kann ich das in WP tun?

(Ich verwende WP als CMS mit statischen Home- und Inside-Seiten. Ich erstelle eigene Templates, style die Menüs in CSS, registriere dann die Menüs in der functions.php und rufe sie in den Templates auf.) In WP fügst du Einträge hinzu die Menüs über die Liste der Seiten oder über die benutzerdefinierten Links. Aber ich möchte nicht, dass “Produkte” verlinkt werden. Wenn ich dem benutzerdefinierten Link keinen Link hinzufüge, kann ich ihn nicht zum Menü hinzufügen.

Ist dies über die Menüs Admin möglich oder muss ich es anders angehen?

Danke für jede Hilfe!

Solutions Collecting From Web of "Wie haben Sie einen Menüeintrag auf oberster Ebene, der keine Verknüpfung hat, aber Untermenüs enthält, die verknüpft sind?"

Ich habe ein paar Ideen:

  1. Setzen Sie den benutzerdefinierten Link auf # der nichts zurückgibt
  2. Fügen Sie den Elementen eine benutzerdefinierte class hinzu und verwenden Sie dann jQuery, um die Verknüpfungen zu entfernen.
  3. Verwenden Sie ein PHP-Äquivalent zur jQuery-Methode
  4. Verwenden Sie das Plugin Eltern-Link deaktivieren (oder nehmen Sie es auseinander und schreiben Sie Ihr eigenes)

Der einfachste Weg, dies ohne ein Plugin oder etwas zu tun, ist die Verwendung der “Menüs” -function von WordPress. Hier sind die statementen für WordPress 4.8:

  1. Gehen Sie in Ihrem WordPress-Dashboard zu “Darstellung -> Menüs”
  2. Wählen Sie auf der Registerkarte “Menüs bearbeiten” die Option “Benutzerdefinierte Links”.
  3. Geben Sie für die URL “#” ein (keine Anführungszeichen)
  4. Geben Sie für den Linktext den gewünschten Text für die oberste Ebene Ihres Dropdown-Menüs ein
  5. Klicken Sie auf die Schaltfläche “Zum Menü hinzufügen”
  6. Ziehen Sie den Menüeintrag an die gewünschte Position in Ihrem Menü
  7. Klicken Sie für den Menüeintrag, den Sie gerade hinzugefügt haben, auf den Abwärtspfeil rechts neben dem Element (auf der linken Seite des Elements wird “benutzerdefinierter Link” angezeigt).
  8. Entfernen Sie das “#” aus der URL. Dies wird – in allen Browsern – den Link in Klartext umwandeln.
  9. Klicken Sie auf die Schaltfläche “Menü speichern”

Die einfachste Methode, die ich gefunden habe, war ein benutzerdefiniertes Link-Objekt mit dem Link-URL-Wert # zu erstellen. Dies sendet den Benutzer zu einem leeren Hash auf der gleichen Seite, also im Grunde nirgendwo verlinkt.

Es gibt jedoch einige Nebenwirkungen der Verwendung leerer Hashes für Platzhalter-Links. Der Link wird immer noch wie ein Link angezeigt und verhält sich so, dass er einen Benutzer verwirren könnte, wenn er auf einen Link klickt, aber nichts passiert. Der andere Effekt ist, dass das Klicken auf einen leeren Hash-Link einen vorhandenen Hash überschreibt und den Benutzer an den Anfang der Seite sendet. Dies mag zwar für ein Menü, das sich oben auf der Seite befindet, nicht so beunruhigend sein, aber es ist ziemlich störend, wenn die Seite unerwartet springt, wenn Sie es nicht erwarten, besonders wenn es sich um ein Fußzeilenmenü handelt.

Die Lösung besteht darin, die leere Hash-Methode mit einem Code zu kombinieren, um zu erkennen, wann leere Hash-Links im Menü verwendet werden, und das href Attribut vollständig aus diesem Link zu entfernen. Ein a Element ohne ein href Attribut ist die korrekte HTML 5-Methode zum Erstellen einer Platzhalterverknüpfung.

 /** * Remove the href from empty links `` in the nav menus * @param string $menu the current menu HTML * @return string the modified menu HTML */ function wpse_remove_empty_links( $menu ) { return str_replace( '', '', $menu ); } add_filter( 'wp_nav_menu_items', 'wpse_remove_empty_links' ); 

Ich habe es so getriggers: In header.php (deines Themas) habe ich gesucht:

 'link_before' => '', 'link_after' => '', 

und ersetzt durch:

 'link_before' => '', 'link_after' => '', 

In einfachen Worten überprüft dieses Skript, ob der übergeordnete Link mit “#” endet. In diesem Fall fügt es ein span-Element um den Inhalt des A-Tags hinzu, das den Klick deaktiviert.

Ich hoffe es hilft 🙂

Wie andere hier vorgeschlagen haben, können Sie einen benutzerdefinierten Link-Menüeintrag mit der # als URL erstellen. Löschen Sie anschließend die #, sobald sie dem Menü hinzugefügt wurde. Und schließlich können Sie diese einfache Regex verwenden, um das eigentliche Tag von diesen Links zu entfernen.

 preg_replace('/([^< ]+)<\/a>/i', '$1', $navHTML); 

Dies wird den Klick entfernen (und den Artikel aufheben). Auf diese Weise müssen Sie nicht die benutzerdefinierten # Links in Ihrem Menü verwenden.

 add_action( 'wp_footer', function(){ ?>  < ?php }, 1, 0 ); 

Das hat für mich funktioniert:

Ich habe CSS-classn in Menüs> Bildschirmoptionen> CSS-classn aktiviert Dann gab ich dem Menüelement, dass ich die class “.nolink” deaktivieren wollte und fügte dieses Stück Code zu meinem benutzerdefinierten CSS-Panel hinzu:

 .nolink { pointer-events: none; cursor: default; } 

Mit dem PHP-Ansatz habe ich diesen Code zu functions.php hinzugefügt:

 function remove_link_contact_menu($item_output, $item) { if ($item->post_name == 'contact') return '' . $item->title . ''; return $item_output; } add_filter('walker_nav_menu_start_el', 'remove_link_contact_menu', 20, 2); add_filter('megamenu_walker_nav_menu_start_el', 'remove_link_contact_menu', 20, 2); 

Dadurch wird die Verknüpfung mit einem span-Element für das Elementmenü mit post_name == “contact” ersetzt, was ich gesucht habe. Sie können dies leicht ändern, um nach dem Menütitel oder der ID zu suchen, oder Code hinzufügen, um zu überprüfen, ob es untergeordnete Menüelemente usw. hat.

Schätzen Sie, dass dies ein alter Thread ist, aber für einen schnellen und schmutzigen Weg, einen Link in WordPress zu haben, ist, indem Sie die Link URL wie folgt machen:

#_

Beachten Sie den Unterstrich hinter dem Hashtag. Auf diese Weise, wenn Ihr Menü die Seite runterscrollt (zB fixiert), erhalten Sie keinen Sprung zum oberen Rand der Seite, wenn Sie darauf klicken und benötigt keine Plugins / Skripte.

Ich merke, dass ich zu spät im Spiel bin, aber das sind die zwei Methoden, die ich verwende:

1) Machen Sie den übergeordneten Menüeintrag zu einem Duplikat des ersten Unterelements und ändern Sie dessen Label. Wenn der erste Eintrag unter “Produkte” beispielsweise “Produkt 1” lautet, verwenden Sie “Produkt 1” als übergeordneter Menüeintrag und ändern Sie dessen Bezeichnung in “Produkte”. Auf diese Weise führen sowohl “Produkte” als auch “Produkt 1” zur Seite Produkt 1.

2) Fügen Sie eine Weiterleitung hinzu, sodass die Produktseite zu Produkt 1 umgeleitet wird. Der Vorteil dieser Option besteht darin, dass Sie eine leere Produktseite erstellen können, um eine hierarchische Auflistung in Pages zu erstellen, aber wenn jemand versucht, zu den leeren Produkten zu wechseln Seite werden sie umgeleitet.

Gehe zu Aussehen, dann klicke auf Menüs. In diesem Abschnitt gehen Sie unter Menüstruktur und klicken Sie auf den Pfeil nach unten, um die Seite zu erweitern, und Sie werden eine Box sehen, die Link deaktivieren sagt. Aktivieren Sie das Kontrollkästchen und speichern Sie.

Viel einfachere Lösung kann auf einer anderen Frage gefunden werden:

Admin Menu – Hervorhebung des Menüs der obersten Ebene auf einer Untermenüseite (ohne das Untermenü anzuzeigen)

Suchen Sie nach Askelons Antwort. Arbeit ist perfekt, ohne irgendwelche preg_replaces oder jquery zu machen.