我遇到了一个问题,看起来好像有几个人遇到过,但没有人发布解决方案。
当我使用 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 时,问题就停止了,尽管我需要它为 true。我还可以通过编辑 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 nav-menu-template 文件而消失,尽管版本更新会破坏它,因此我需要修复核心问题。
对 wp_nav_menu() 的调用可以是普通的或带有任何参数(名称、ID 等)的错误是相同的。
感谢您的时间。
附言。这是我第一次发布的问题,如果我做错了什么,我深表歉意。
以下是我的 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);