Existe-t-il un moyen de coder en dur les éléments de menu personnalisés lors de l'installation du premier thème? Je crée un thème qui créera automatiquement des pages communes lors de l'installation. J'ai donc besoin de savoir si je peux également les ajouter au menu personnalisé de Wordpress afin que le client n'ait pas besoin de les ajouter manuellement?
En d'autres termes: comment insérer / créer un élément de menu personnalisé par programme?
Faites-moi savoir si quelque chose n'est pas clair. Le guide vers la page appropriée du codex est le bienvenu. Merci!
mise à jour: code essayé d'ici Cibler un menu spécifique avec wp_nav_menu_items
Inscription au menu:
function register_my_menus() {
register_nav_menus(
array('main-menu' => __( 'Main Menu' ) )
);
}
add_action( 'init', 'register_my_menus' );
Utilisation du modèle:
<?php wp_nav_menu( array( 'theme_location' => 'main-menu' ) ); ?>
Code pour ajouter de nouveaux éléments:
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 );
lors de l'ajout du code pour ajouter de nouveaux éléments dans le menu de navigation dans le functions.php
fichier, rien ne se passe dans la page de menu du panneau d'administration, mais les éléments de menu actuels ont disparu dans le site!
Fatal error: Cannot use object of type stdClass as array in C:\wamp\www\citystir\wp-admin\menu.php on line 25
. Mais le menu est créé et lorsque la page est actualisée, tout fonctionne, mais rien ne s'affiche dans laAppearance -> Menu Theme Location
section. Nous sommes vraiment proches :) Merci!$locations = get_theme_mod('nav_menu_locations');
Donc, les codes avant cela (toute l'insertion du menu est effectuée) sont exécutés et le code après cela (définissez l'emplacement du thème souhaité) ne sont pas exécutés .Votre code d'origine est très proche de l'argent et je pense sérieusement que la longue solution de @Bainternet (sans infraction) est exagérée, alors jetez un œil à ceci:
Votre seul problème était que vous ne renvoyiez pas $ items après que la fonction a recherché le menu correct et que vous manquiez le deuxième argument de rappel qui était nécessaire pour effectuer la vérification ( $ args ).
la source
Il y a un bug dans Wordpress 3.4.2:
https://github.com/WordPress/WordPress/commit/ae96b842f9f55ecfb22da705a4902b9d25580259#wp-includes/nav-menu.php
Vous devez créer le terme relation manuellement:
Voir https://gist.github.com/4148529 pour un exemple de la classe Menu pour une création de menu simple.
la source
Pour information, l'utilisateur actuel doit avoir le droit d'ajouter des termes, mes éléments menu_items ont été créés mais pas ajoutés dans la table wp_terms_relationship avant d'ajouter un appel à wp_set_current_user (1);
la source