Gibt es eine Möglichkeit, die benutzerdefinierten Menüelemente bei der Installation des ersten Themas fest zu codieren? Ich erstelle ein Thema, das bei der Installation automatisch einige allgemeine Seiten erstellt. Ich muss also wissen, ob ich sie auch zum benutzerdefinierten Wordpress-Menü hinzufügen kann, damit der Client sie nicht manuell hinzufügen muss.
Mit anderen Worten: Wie kann ein benutzerdefiniertes Menüelement programmgesteuert eingefügt / erstellt werden?
Lassen Sie mich wissen, wenn etwas unklar ist. Leitfaden zur entsprechenden Codex-Seite ist willkommen. Vielen Dank!
Update: Code von hier aus ausprobiert. Spezifisches Menü mit wp_nav_menu_items anvisieren
Menü Registrierung:
function register_my_menus() {
register_nav_menus(
array('main-menu' => __( 'Main Menu' ) )
);
}
add_action( 'init', 'register_my_menus' );
Vorlage verwenden:
<?php wp_nav_menu( array( 'theme_location' => 'main-menu' ) ); ?>
Code zum Hinzufügen neuer Elemente:
function new_nav_menu_items($items) {
if( $args->theme_location == 'main-menu' ){
$homelink = '<li class="home"><a href="' . home_url( '/' ) . '">' . __('Home') . '</a></li>';
$items = $homelink . $items;
return $items;
}
}
add_filter( 'wp_nav_menu_items', 'new_nav_menu_items', 10, 2 );
Beim Hinzufügen des Codes zum Hinzufügen neuer Elemente zum functions.php
Navigationsmenü in der Datei geschieht auf der Menüseite im Admin-Bereich nichts, aber die aktuellen Menüelemente werden nicht mehr angezeigt.
Fatal error: Cannot use object of type stdClass as array in C:\wamp\www\citystir\wp-admin\menu.php on line 25
. Aber das Menü wird erstellt und wenn die Seite aktualisiert wird, funktioniert alles, aber imAppearance -> Menu Theme Location
Abschnitt wird nichts angezeigt . Wir sind wirklich nah dran :) Danke!$locations = get_theme_mod('nav_menu_locations');
Daher werden die Codes davor (das Einfügen des gesamten Menüs ist abgeschlossen) ausgeführt und der Code danach (Festlegen des gewünschten Speicherorts für das Thema) wird nicht ausgeführt .Ihr ursprünglicher Code ist dem Geld sehr nahe und ich denke ernsthaft, dass die langwierige Lösung von @Bainternet (keine Beleidigung) übertrieben ist. Schauen Sie sich stattdessen Folgendes an:
Ihr einziges Problem war, dass Sie $ items nicht zurückgaben , nachdem die Funktion das richtige Menü überprüft hatte, und Ihnen das zweite Rückrufargument fehlte, das für die Überprüfung erforderlich war ( $ args ).
quelle
In Wordpress 3.4.2 gibt es einen Fehler:
https://github.com/WordPress/WordPress/commit/ae96b842f9f55ecfb22da705a4902b9d25580259#wp-includes/nav-menu.php
Sie müssen die Termbeziehung manuell erstellen:
Unter https://gist.github.com/4148529 finden Sie ein Beispiel für die Menüklasse zur einfachen Menüerstellung.
quelle
Zur Information muss der aktuelle Benutzer Rechte zum Hinzufügen von Begriffen haben. Meine menu_items wurden erstellt, aber nicht in der Tabelle wp_terms_relationship hinzugefügt, bevor ich wp_set_current_user (1) aufrufe.
quelle