菜单项在保存或编辑后消失/为空

时间:2021-03-03 作者:Abdul Awal Uzzal

我已经在一个网站上出现了这个奇怪的问题好几个星期了,我尝试了通过搜索找到的所有东西,但仍然找不到问题的线索。

每当我向菜单(外观>菜单)添加一些项目时,一些项目都会变为空。然后当我再次单击“保存”按钮时被删除。同样,如果我编辑任何帖子,菜单项也会发生同样的情况。

这是我迄今为止所做的尝试,

PHP中增加了max\\u执行时间、max\\u输入变量、max\\u输入时间、内存限制、post\\u max\\u大小、upload\\u max\\u文件大小、max\\u文件上传。ini。我将这些设置为非常高的数字,但仍然没有成功,然后我尝试将该网站复制到另一个主机和我的本地主机上,但没有成功。对所有环境执行了#1

  • 将主题更改为默认2021,并停用了所有插件,仍然没有运气检查数据库,wp\\u posts表有4.6k行,总大小为10.8MB,开销约300KB。因此,我尝试将该表的存储引擎从MyISAM更改为innoDB,但问题仍然存在
  • 2 个回复
    SO网友:rahmat hidawe

    我以前也遇到过同样的问题,这是由linux中的文件权限引起的。

    为了确保这些问题,您是否希望通过在wp-config.php

    define( \'WP_DEBUG\', true );
    define( \'WP_DEBUG_LOG\', true );
    define( \'WP_DEBUG_DISPLAY\', true );
    
    如果在单击“保存”按钮时向提供web控制台消息,效果会更好。

    SO网友:An Nguyen

    Does your site use object cache?

    I think this may relate to cache issue on your site.

    You can also debug what happens in your site by adding the debug code in core wordpress.

    Add to Menu button calls wp_update_nav_menu_item function in wp-includes/nav-menu.php.

    You can place a debug code at the begin of the function to see what happens:

    function wp_update_nav_menu_item( $menu_id = 0, $menu_item_db_id = 0, $menu_item_data = array() ) {
        error_log(
            json_encode(
                array(
                    \'method\'          => __METHOD__,
                    \'menu_id\'         => $menu_id,
                    \'menu_item_db_id\' => $menu_item_db_id,
                    \'menu_item_data\'  => $menu_item_data,
                )
            )
        );
    

    Save Menu button calls wp_update_nav_menu_object function in wp-includes/nav-menu.php.

    Debug code:

    function wp_update_nav_menu_object( $menu_id = 0, $menu_data = array() ) {
        error_log(
            json_encode(
                array(
                    \'__METHOD__ \' => __METHOD__,
                    \'menu_id\'     => $menu_id,
                    \'menu_data\'   => $menu_data,
                )
            )
        );
    

    Then compare the menu_id value to the id stores in your database.

    // Query to get menu_id:
    select * from wp_terms where term_id = `menu_id_value`;
    
    // Query to get menu_items: 
    select id, post_name from wp_posts where post_type = \'nav_menu_item\';
    

    If there is a cache issue, these values are different.