Я столкнулся с проблемой, с которой, похоже, столкнулись несколько человек, но никто не опубликовал решение.
Проблема возникает после создания пользовательского типа публикации и пользовательской таксономии при использовании функции wp_nav_menu (). Я вижу эту ошибку только на своей странице архива, где я получаю сообщение об ошибке:
Notice: Undefined property: WP_Post_Type::$term_id in C:\WebServer\Bolton\wp-includes\nav-menu-template.php on line 350
Проблема прекращается, когда я меняю свою иерархию таксономии на ложную, хотя мне нужно, чтобы это было так Я также смог остановить ошибку, отредактировав файл ядра 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 не может получить идентификатор запрашиваемого объекта, поскольку он находится на странице архива и из-за него выдает ошибку. Меню по-прежнему отображается правильно, хотя с большой пометкой прямо через навигацию.
Уведомление исчезает с моим отредактированным файлом шаблонов navpress меню Wordpress, хотя обновление версии сломает его, поэтому мне нужно исправить проблему с ядром.
Вызов wp_nav_menu () может быть простым или с любым параметром (имя, идентификатор и т. Д.), Ошибка та же.
Спасибо за ваше время.
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);