wake-up-neo.net

Was ist der einfachste Weg, um ein gesamtes Navigationsmenü zu duplizieren?

Was ist der einfachste Weg, um ein gesamtes Navigationsmenü zu duplizieren? Es ist mir egal, ob es sich um SQL-Befehle oder so handelt. Ich habe nur ein paar wirklich große Menüs, die ich gerne duplizieren würde. Ich habe kein Plugin dafür gesehen.

Zur Verdeutlichung möchte ich das Menü duplizieren, damit ich einige Änderungen daran vornehmen und es an anderer Stelle als sekundäres Menü verwenden kann. Ich versuche nicht, das Menü zweimal anzuzeigen.

2
cwd

UPDATE: Am "einfachsten" geht es mit meinem neuen Plugin: http://wordpress.org/extend/plugins/enhanced-menu-editor/

Es ist noch nicht genehmigt, aber sobald es ist, werde ich das Widget veröffentlichen. Sie können damit nicht nur Menüs kopieren, sondern auch die Menüstruktur, die Sie im Menü-Editor festgelegt haben, mit der Seitenhierarchie der Seiten selbst synchronisieren. Sie können also Drag-and-Drop-Ajax verwenden, anstatt möglicherweise Hunderte von Seiten manuell zu bearbeiten.

ALTE ANTWORT:

Der "einfachste" Weg ist die Verwendung von Code. Es gibt zwei Funktionen, die Sie verwenden möchten:

wp_create_nav_menu() erstellt das Menü selbst und gibt die menu_id zurück. wp_update_nav_menu_item() erstellt einen neuen Menüeintrag, wenn Sie 0 für den Menüeintrag id param übergeben.

Anschließend können Sie mit der Klasse wp_nav_menu walker alle vorhandenen Elemente in einem Menü durchlaufen. Diese Website gibt Ihnen zunächst einen guten Anhaltspunkt.

http://www.kriesi.at/archives/improve-your-wordpress-navigation-menu-output

Sie rufen also zuerst die Funktion zum Erstellen eines Navigationsmenüs auf.

Implementieren Sie dann den Nav-Walker auf einer bestimmten Seite. In der start_el-Funktion Ihrer Walker-Klasse haben Sie Zugriff auf den $ item-Parameter, mit dem Sie wp_update_nav_menu_item () mit identischen Eigenschaften wie das vorhandene Menü aufrufen können, aber nur 0 anstelle der tatsächlichen ID des Elements übergeben, wodurch eine neue erstellt wird Menüpunkt.

Die einzige andere Eigenschaft, die Sie berücksichtigen müssen, ist der menu-item-parent-id, da dieser auf Ihr neu erstelltes Menüelement verweisen soll und nicht auf das alte im anderen Menü. Dazu müssen Sie ein Array erstellen, das alte und neue IDs aufzeichnet.

Wenn Sie ein konkretes Beispiel für diese Lösung wünschen, senden Sie mir einfach eine E-Mail an marcuspope.com und ich werde sehen, was ich tun kann.

Hoffentlich hilft das! -Marcus

2
Marcus Pope

Ich hatte also mit einem ähnlichen Problem zu kämpfen

  1. Ich wollte viele Menüs erstellen, die basierend auf den Berechtigungen angezeigt werden sollten ... Viele der Elemente waren Duplikate usw. Auf diese Weise konnte auf einfache Weise wahrscheinlich etwas kopiert werden, das bereits vorhanden war

  2. Ich musste dann all diese Menüs in mehrere Blogs migrieren, die dieselben Berechtigungen haben.

Aber ich bin nur ein halbherziger Programmierer.

Das ist also die Lösung von kludge, aber es scheint zu funktionieren, keine Programmierung erforderlich

WP hat eine Exportfunktion - wenn Sie ein sauberes Blog haben (und vielleicht auch nicht), werden anscheinend alle Menüelemente im selben Teil der Exportdatei aufgelistet.

Es gibt (möglicherweise) nur zwei Dinge, wenn Sie es mit einem einzelnen Blog zu tun haben, das geändert werden muss, da Posts und Seiten aufgrund doppelter Slugs ohnehin übersprungen werden

Dies ist die Definition für die benutzerdefinierte Kategorie des Menüs. Sie müssen den Slug und die CDATA ändern (wo in meinem Beispiel "FA" steht)

<wp:term><wp:term_id>3</wp:term_id><wp:term_taxonomy>nav_menu</wp:term_taxonomy><wp:term_slug>FA</wp:term_slug><wp:term_name><![CDATA[FA]]></wp:term_name></wp:term>

Als nächstes müssen Sie nach allen Menüelementen suchen und diese ersetzen, die sich auf diesen Slug/diese Kategorie beziehen.

<category domain="nav_menu" nicename="FA"><![CDATA[FA]]></category>

Suchen Sie erneut nach dem "FA"

Speichern Sie die XML-Datei mit einem sauberen Dateinamen.

Dann verwenden Sie das WP Importer-Plugin, um das XML zu importieren

YMMV aber WFM und hat mir eine Menge Zeit gespart

2
AndyBeard