WordPress后台菜单页报错求助:Creating default object from empty value警告
解决WordPress导航菜单页面的"Creating default object from empty value"警告
错误原因
这个警告出现在wp-admin/includes/nav-menu.php第406行,本质是代码试图给一个空对象添加属性posts_page。具体触发场景:
当你在WordPress后台设置了静态首页(即show_on_front选项值为page),并且指定了「文章页面」(对应page_for_posts选项),但这个指定的页面ID对应的页面已经被删除、或者ID本身无效时,get_post($posts_page)会返回null,后续代码直接对null对象赋值就触发了该警告。
解决方法
方法一:通过后台设置修复(推荐,无需改代码)
- 登录WordPress后台,进入设置 → 阅读页面
- 查看「您的首页显示」区域:
- 如果选择了「静态页面」,检查「文章页面」的下拉选项——如果显示为「(已删除)」或者不存在的页面,这就是问题所在
- 修复操作:
- 若没有可用的文章页面,先去页面 → 新建页面创建一个(例如命名为「博客」)
- 返回「设置 → 阅读」,在「文章页面」下拉框中选择刚才创建的有效页面,点击「保存更改」即可
方法二:临时代码修复(仅紧急场景使用)
如果暂时无法修改后台设置,可以给原代码添加对象有效性判断,避免对空对象赋值:
// Insert Posts Page. $posts_page = 'page' === get_option( 'show_on_front' ) ? (int) get_option( 'page_for_posts' ) : 0; if ( ! empty( $posts_page ) ) { $posts_page_obj = get_post( $posts_page ); // 新增判断:确保$posts_page_obj是有效的WP_Post对象 if ( is_a( $posts_page_obj, 'WP_Post' ) ) { $posts_page_obj->posts_page = true; $important_pages[] = $posts_page_obj; $suppress_page_ids[] = $posts_page_obj->ID; } }
注意:修改WordPress核心文件存在风险,更新WordPress后修改会被覆盖,因此优先推荐方法一。
内容的提问来源于stack exchange,提问作者Rick
相关产品推荐
相关产品推荐

