2

我遇到了一个问题,看起来好像有几个人遇到过,但没有人发布解决方案。

当我使用 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);
4

0 回答 0