不可用的菜单和“非法小部件设置ID:NAV_MENU_ITEM[]”错误

时间:2016-02-23 作者:lintuxvi

这是我的WP安装中的一个bug,不知不觉中出现了;我不能肯定它是什么时候开始的。

描述一下:在网站历史的早期,“外观->菜单”页面中创建了一些菜单,它们工作得很好,如:

它们有菜单项,可以分配到菜单位置,可以重命名。最近,由于需要创建新菜单,我注意到创建新菜单时存在以下问题:

可以创建新菜单,但单击“创建菜单”后,包含用作菜单项的帖子和页面的侧栏仍呈灰色。无法重命名菜单:

菜单名不会显示在“菜单名”文本字段中,随后单击“创建菜单”只需在每次新单击时重复这些新的但不可用的菜单(例如:我创建Test1,然后创建Test2..现在有2个Test1条目和2个Test2条目…创建Test3重复效果,每个都创建3个)

  • 单击“菜单”标题旁边的“在Customizer中管理”会导致以下错误:
    1.     Fatal error: Uncaught exception \'Exception\' with message \'Illegal widget setting ID: nav_menu_item[]\' in /Applications/MAMP/htdocs/discoverlongisland/wp-includes/customize/class-wp-customize-nav-menu-item-setting.php:179 
          Stack trace: #0 /Applications/MAMP/htdocs/discoverlongisland/wp-includes/class-wp-customize-nav-menus.php(551): WP_Customize_Nav_Menu_Item_Setting->__construct(Object(WP_Customize_Manager), \'nav_menu_item[]\', Array) 
          #1 [internal function]: WP_Customize_Nav_Menus->customize_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(\'customize_regis...\', Object(WP_Customize_Manager)) 
          #4 [internal function]: WP_Customize_Manager->wp_loaded(\'\') 
          #5 /Applications/MAMP/htdocs/discoverlongisland/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 on line 179
      
      我已经禁用了所有插件,问题仍然存在。

      以前有人碰到过这个吗?

    1 个回复
    最合适的回答,由SO网友:Florian Sander 整理而成

    我也有同样的问题。我没有预先存在的菜单,但新创建的菜单具有与您描述的相同的症状。

    在我的例子中,问题是定义不正确的表wp\\U terms。列term\\u id以及所有索引和主键上缺少AUTO\\u INCREMENT标志。

    我只能假设更新过程在过去的某个时候搞砸了。我经营着一个非常古老的装置,最初建于2005年。

    以下更改为我修复了该问题:

    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`);
    
    不过,我建议您将您的模式与当前的模式进行比较。wp\\u term\\u分类法也可能涉及其中(我的情况中没有)。