web-dev-qa-db-fra.com

Accueil Lien de menu personnalisé ne fonctionne pas

J'essaie d'avoir le lien de menu par défaut lorsque j'utilise mes menus personnalisés, et dans mon document functions.php, j'ai ceci:

function home_page_menu_args( $args ) {
    $args['show_home'] = true;
    return $args;
}
add_filter( 'wp_page_menu_args', 'home_page_menu_args' );

Le problème est que, dans les options de menu personnalisées> pages, j'ai ceci: "Aucun élément". Donc je ne sais pas ce qui se passe, cela fonctionnait dans d'autres sites Web mais pas dans celui-ci, une idée?

1
Arturo

Premièrement, je suppose que vous avez des menus de navigation personnalisés correctement configurés:

  1. register_nav_menus() in functions.php, pour définir les valeurs theme_location
  2. wp_nav_menu() appelle dans le modèle, avec theme_location appelé dans le tableau args
  3. Menus de navigation personnalisés définis dans l'admin
  4. Menu (s) de navigation personnalisé attribué aux emplacements de thème

Si c'est le cas, le problème est que vous utilisez le mauvais filtre. Le filtre wp_page_menu_args est appliqué à l'intérieur de wp_page_menu() , qui est le rappel par défaut. pour wp_nav_menu() quand aucun menu n'est assigné au theme_location indiqué.

La sortie de wp_nav_menu() applique son propre filtre: wp_nav_menu_args . Il vous faut donc également associer votre rappel à ce filtre:

function home_page_menu_args( $args ) {
    $args['show_home'] = true;
    return $args;
}
add_filter( 'wp_page_menu_args', 'home_page_menu_args' );
// Hook into wp_nav_menu
add_filter( 'wp_nav_menu_args', 'home_page_menu_args' );

De cette façon, l'argument show_home retournera la valeur true pour la sortie wp_page_menu() et pour la sortie wp_nav_menu().

Soyez prudent avec wp_nav_menu(), cependant; si l'utilisateur ajoute un lien d'accueil au menu personnalisé, alors deux liens de page d'accueil seront affichés dans le menu affiché.

1
Chip Bennett