我遇到了一个问题,好像有人遇到了,但是没有人发布解决方案。
当我使用wp_nav_menu()函数创建自定义帖子类型和自定义分类法后,会出现问题。我仅在我的存档页面上看到此错误,我在该页面上收到错误:
Notice: Undefined property: WP_Post_Type::$term_id in C:\WebServer\Bolton\wp-includes\nav-menu-template.php on line 350
尽管我将分类法更改为false,但问题仍然存在。我还可以通过编辑WordPress核心文件来停止错误:
/wp-includes/nav-menu-template.php
第349-361行,如果我将其包装在is_single()
中// LINES 349 - 361
if (is_single()) {
$desc = $queried_object->term_id;
do {
$possible_taxonomy_ancestors[ $queried_object->taxonomy ][] = $desc;
if ( isset( $term_to_ancestor[ $desc ] ) ) {
$_desc = $term_to_ancestor[ $desc ];
unset( $term_to_ancestor[ $desc ] );
$desc = $_desc;
} else {
$desc = 0;
}
} while ( ! empty( $desc ) );
}
因此nav-menu-template无法获得查询的对象ID,因为它位于存档页面上,并因此给出了错误。菜单仍然可以正确显示,尽管在整个导航中有一个很大的提示。
该通知与我编辑的Wordpress导航菜单模板文件一起消失了,尽管版本更新会破坏该文件,所以我需要修复核心问题。
对wp_nav_menu()的调用可以是简单的,也可以是任何参数(名称,ID等)的错误相同。
谢谢您的时间。
Ps。这是我第一个发布的问题,如果做错任何事情,我深表歉意。
以下是我的CPT和分类法注册:
// Register CPT's
$args = [
'label' => 'Services',
'public' => true,
'has_archive' => true,
'menu_icon' => 'dashicons-hammer',
'taxonomy' => 'locations'
];
register_post_type ("Services", $args);
// Register taxonomies
$labels = [
'name' => 'Locations',
'singular_name' => 'Location',
];
$args = [
'hierarchical' => true,
'labels' => $labels,
'public' => true,
'query_var' => true,
];
register_taxonomy ("locations", "services", $args);