wp_update_nav_menu_item wird nicht in der API für mehrere Standorte gespeichert

Ich erstelle ein Skript, das den Aufbau einer WordPress-Site von einem anderen CMS automatisiert. Ich war in der Lage, jede Einstellung zu ändern: Themen, Optionen, Subdomain, Site-Titel usw.

Was mir jedoch entgeht, ist das Erstellen von benutzerdefinierten Menüs. Der Code unten sollte in der Lage sein, es für mich zu tun. Aber es ist nicht, und ich bin völlig ratlos, was zu tun ist.

Dieser Code wird nicht im Admin-Panel ausgeführt (es ist kein Plugin). Es sitzt tatsächlich auf WordPress und enthält wp-load und wp-admin functionen Seiten.

$mymenu = wp_get_nav_menu_object("Main Navigation Menu"); $menuID = (int) $mymenu->term_id; $itemData = array( 'menu-item-db-id' => 0, 'menu-item-object-id' => $pageId, 'menu-item-object' => 'page', 'menu-item-type' => 'post_type', 'menu-item-parent-id' => 0, 'menu-item-position' => $itemOrder, 'menu-item-title' => $pageData['title'], 'menu-item-url' => get_permalink($pageId), 'menu-item-description' => $pageData['post_content'], 'menu-item-attr-title' => $pageData['post_excerpt'], 'menu-item-status' => 'publish',
'menu-item-target' => ''
); $thisMenuItem = wp_update_nav_menu_item($menuID, 0, $itemData);

$ itemData ist das Ergebnis von Daten, die von einem anderen CMS kommen, und das Ergebnis, dass es von einem Post in WordPress gespeichert wird, um den Menüeintrag zu erzeugen, den ich in meinem Menü haben möchte. Jede Hilfe, um das wp_update_nav_menu_item zum Speichern zu bekommen, wäre sehr hilfreich. Auch hier wird ein benutzerdefiniertes Menü ohne Verwendung des Admin-Steuerfelds erstellt.`

Solutions Collecting From Web of "wp_update_nav_menu_item wird nicht in der API für mehrere Standorte gespeichert"

 $wpdb->insert( $wpdb->term_relationships, array( "object_id" => $thisMenuItem, "term_taxonomy_id" => $menuID ), array( "%d", "%d" ) ); 

Dies fehlte im Fragencode.
Dadurch können die Menüelemente an das Navigationsmenü selbst gebunden werden.

Während Pauls Antwort wirklich hilfreich war und mich definitiv in die richtige Richtung brachte, funktionierte sein Code für mein Problem nicht ganz.

Im Grunde wp_get_nav_menu_object() die function wp_get_nav_menu_object() das $menu Objekt zurück, das (unter anderem) die Eigenschaften term_id und term_taxonomy_id hat.

Auf meinen Clients waren die WP-Instanzen term_id und term_taxonomy_id nicht identisch.

Was Paul tut, ist die Eigenschaft term_id in die Beziehungstabelle einzufügen und sie mit der Spalte term_taxonomy_id zu term_taxonomy_id , aber in meinem Fall musste ich die Eigenschaft term_taxonomy_id aus dem $menu Objekt einfügen (und die Namensgebung betrachten – ich glaube, das ist richtig).

Hier ist der Link, wenn Sie den Unterschied zwischen term_id und term_taxonomy_id überprüfen term_taxonomy_id .

Am Ende sah mein Code so aus:

 $wpdb->insert( $wpdb->term_relationships, array( "object_id" => $menu_item_id, "term_taxonomy_id" => $menu->term_taxonomy_id ), array( "%d", "%d" ) );