switch_to_blog () und wp_nav_menu () funktionieren nicht richtig

Ich habe ein MU-Plugin im Netzwerk mit dieser kleinen function aktiviert, um Menü 4 von der Hauptseite in meinem Netzwerk abzufragen. Auf der Haupt-Website im Netzwerk (1) funktionieren die Dinge wie erwartet.

Auf den Unterseiten im Netzwerk (2,3,4) wird kein Menü angezeigt (da ich den Fallback auf false gesetzt habe und kein Menü gefunden wurde).

Ich frage mich, ob ich hier etwas falsch mache oder ob etwas Größeres falsch läuft.

/** * Multisite menu */ function wp_multisite_nav_menu() { global $blog_id; $args = array( 'menu' => 4, 'fallback_cb' => false, 'menu_class' => 'main-nav', 'depth' => 0, ); if ( ! is_multisite() || 1 == $blog_id ) { wp_nav_menu( $args ); return; } // switch to blog, and query switch_to_blog( 1 ); wp_nav_menu( $args ); // switch back to original blog restore_current_blog(); } 

Ich kann sehen, dass switch_to_blog richtig schaltet, da ich Daten von der Haupt-Site mit get_bloginfo( 'name' ); und get_the_title( 123 ); ohne irgendwelche Probleme.

Alternativ, wenn dies nicht der beste Weg ist – ich bin bereit für zusätzliche Lösungen.

Solutions Collecting From Web of "switch_to_blog () und wp_nav_menu () funktionieren nicht richtig"

Nach ein wenig Debugging konnte ich dies auf folgendes beschränken:

Das Menü, das ich für die Anzeige auf jeder Website im Netzwerk erstellt hatte, bestand aus benutzerdefinierten Post-Typen, die auf keiner anderen Unterwebsite registriert waren, sondern nur auf der Hauptwebsite (1).

Aus welchen Gründen auch immer muss der benutzerdefinierte Post-Typ an jeder Site im Netzwerk registriert werden, wo Sie das Menü anzeigen (2,3 usw.).

Dies kann auf die gleiche Weise geschehen wie auf der obersten übergeordneten Website (1), aber die show_ui innerhalb des Aufrufs show_ui auf false show_ui , um zu verhindern, dass der benutzerdefinierte Beitragstyp im show_ui des show_ui Standorts angezeigt wird.