web-dev-qa-db-fra.com

Menus inutilisables et erreur "Paramètre de widget illégal: nav_menu_item []"

Ceci est un bogue dans mon installation WP qui a surgi sans le savoir; Je ne peux pas dire avec certitude quand cela a commencé.

Pour le décrire: il y avait des menus créés dans la page Apparence -> Menus au début de l'histoire du site, et ils fonctionnent parfaitement, comme dans:

  • Ils ont des éléments de menu
  • Ils peuvent être assignés à des emplacements de menu
  • Ils peuvent être renommés

Récemment, étant donné que de nouveaux menus doivent être créés, j'ai constaté les problèmes suivants lors de la création d'un nouveau menu:

De nouveaux menus peuvent être créés, mais après avoir cliqué sur "Créer un menu", la barre latérale avec les messages et les pages à utiliser comme éléments de menu est toujours grisée. Le menu ne peut pas être renommé:

  1. Le nom du menu n'apparaît pas dans le champ de texte "Nom du menu", et les clics suivants sur "Créer un menu" dupliquent simplement ces nouveaux menus encore inutilisables chaque fois par nouveau clic (ex: je crée Test1, puis Test2 .. il y a maintenant 2 entrées Test1 et 2 entrées Test2 ... la création de Test3 répète l'effet, en créant 3 de chaque)
  2. En cliquant sur "Gérer dans le personnaliseur" à côté de la rubrique "Menus", l'erreur suivante apparaît:
 Erreur fatale: exception non capturée 'Exception' avec le message 'ID de paramètre de widget illégal: nav_menu_item []' dans/Applications/MAMP/htdocs/discoverlongisland/wp-includes/personnaliser/class-wp-personnaliser-nav-menu -item-setting.php: 179 
 Trace de pile: # 0 /Applications/MAMP/htdocs/discoverlongisland/wp-includes/class-wp-customize-nav-menus.php(551): WP_Customize_Nav_Menu_Item_Setting -> __ construct (Objet (WP_Customize_Manager), 'nav_menu_item []', Array) 
 # 1 [fonction interne]: WP_Customize_Nav_Menus-> personnaliser_register (Object (WP_Customize_Manager))) 
 # 2/Applications/MAMP/htdocs/discoverlongisland/wp-includes/plugin.php (525): call_user_func_array (Array, Array) 
 # 3 /Applications/MAMP/htdocs/discoverlongisland/wp-includes/class-wp-customize-manager.php(583 ): do_action ('custom_regis ...', Object (WP_Customize_Manager)) 
 # 4 [fonction interne]: WP_Customize_Manager-> wp_loaded ('') 
 # 5/Applications/MAMP/htdocs/découvrirlongisland/wp- includes/plugin.php (525): call_user_func_array (Array, Array) 
 # 6/Applications/MAMP/htdocs/discoverlongisland/wp-settings. in /Applications/MAMP/htdocs/discoverlongisland/wp-includes/customize/class-wp-customize-nav-menu-item-setting.php à la ligne 179 

J'ai désactivé tous les plugins et le problème persiste.

Quelqu'un a-t-il déjà couru ça?

1
lintuxvi

J'ai eu le même problème. Je n'avais pas de menus préexistants, mais ceux qui venaient d'être créés présentaient les mêmes symptômes que ceux que vous avez décrits.

Dans mon cas, le problème était une table mal définie wp_terms. Il manquait l'indicateur AUTO_INCREMENT dans la colonne term_id, ainsi que tous les index et la clé primaire.

Je ne peux que supposer que le processus de mise à jour a échoué à un moment donné dans le passé. Je gère une installation assez ancienne qui a été créée en 2005.

La modification suivante a résolu le problème pour moi:

ALTER TABLE `wp_terms`
CHANGE COLUMN `term_id` `term_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT FIRST,
ADD PRIMARY KEY (`term_id`),
ADD INDEX `name` (`name`),
ADD INDEX `slug` (`slug`);

Je recommanderais cependant de comparer votre schéma à un schéma actuel. wp_term_taxonomy pourrait également être impliqué (ce n'était pas le cas dans mon cas).

2
Florian Sander