Czy jest jakiś sposób, aby zakodować na stałe niestandardowe elementy menu po zainstalowaniu pierwszego motywu? Tworzę motyw, który po zainstalowaniu automatycznie tworzy wspólne strony. Więc muszę wiedzieć, czy mogę dodać je również do niestandardowego menu Wordpress, aby klient nie musiał dodawać ich ręcznie?
Innymi słowy: jak programowo wstawiać / tworzyć niestandardowe pozycje menu?
Daj mi znać, jeśli coś będzie niejasne. Przewodnik po odpowiedniej stronie kodeksu jest mile widziany. Dzięki!
aktualizacja: wypróbowano stąd kod Kierowanie na określone menu za pomocą wp_nav_menu_items
Rejestracja w menu:
function register_my_menus() {
register_nav_menus(
array('main-menu' => __( 'Main Menu' ) )
);
}
add_action( 'init', 'register_my_menus' );
Zastosowanie szablonu:
<?php wp_nav_menu( array( 'theme_location' => 'main-menu' ) ); ?>
Kod dodawania nowych elementów:
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 );
podczas dodawania kodu do dodawania nowych elementów w menu nawigacyjnym w functions.php
pliku pojawiają się informacje na stronie menu w panelu administracyjnym, ale bieżące elementy menu zniknęły na stronie!
Fatal error: Cannot use object of type stdClass as array in C:\wamp\www\citystir\wp-admin\menu.php on line 25
. Ale menu jest tworzone i po odświeżeniu strony wszystko działa, ale nic nie pokazuje wAppearance -> Menu Theme Location
sekcji. Jesteśmy bardzo blisko :) Dzięki!$locations = get_theme_mod('nav_menu_locations');
Więc kody przed tym (wszystkie wstawianie menu są wykonane) są wykonywane, a kod po tym (ustaw żądaną lokalizację motywu) nie jest wykonywany .Twój oryginalny kod jest bardzo zbliżony do pieniędzy i myślę, że to długie rozwiązanie @Bainternet (bez obrazy) jest przesadą, więc spójrz na to:
Twój jedyny problem polegał na tym, że nie zwracałeś $ pozycji po sprawdzeniu poprawności menu przez funkcję i brakowało drugiego argumentu wywołania zwrotnego, który był potrzebny do sprawdzenia ( $ args ).
źródło
W Wordpress 3.4.2 występuje błąd:
https://github.com/WordPress/WordPress/commit/ae96b842f9f55ecfb22da705a4902b9d25580259#wp-includes/nav-menu.php
Musisz ręcznie utworzyć relację terminu:
Zobacz https://gist.github.com/4148529, aby zobaczyć przykład klasy Menu do łatwego tworzenia menu.
źródło
Aby uzyskać informacje, aktualny użytkownik musi mieć uprawnienia do dodawania warunków, moje elementy menu zostały utworzone, ale nie zostały dodane do tabeli wp_terms_relationship, zanim dodam wywołanie do wp_set_current_user (1);
źródło