分类页面返回未找到的404页面

时间:2018-09-20 作者:agahi

我有一个自定义的帖子类型和一个为其注册的自定义分类法。自定义post类型称为“存储卡”,分类法称为“课程”。对于这种分类法,我创建了两个术语“英语”和“法语”。

当我转到此url时:

example.com/lesson/english

example.com/lesson/french
一切都按预期进行,它指示我归档页面或创建分类法。php或分类英语。php。

但是当我尝试的时候

example.com/lesson
“我获取未找到页面”错误。

我的问题是我是否做错了什么?难道我不应该进入所有“课程”的归档页面吗?我在register taxonomy参数中尝试了以下内容:

        \'rewrite\'           => array( \'slug\' => \'lesson\' ),
以及

        \'rewrite\'           => true,
但没有一个奏效。我见过其他类似的问题,但他们主要关注术语链接,而不是分类链接。此外,大多数教程讨论的是分类法的层次结构,而不是分类法的链接。

以下是创建分类法的代码:

    $labels = array(
    \'name\'              => _x( \'Lessons\', \'taxonomy general name\', \'textdomain\' ),
    \'singular_name\'     => _x( \'Lesson\', \'taxonomy singular name\', \'textdomain\' ),
    \'search_items\'      => __( \'Search Lessons\', \'textdomain\' ),
    \'all_items\'         => __( \'All Lessons\', \'textdomain\' ),
    \'parent_item\'       => __( \'Parent Lesson\', \'textdomain\' ),
    \'parent_item_colon\' => __( \'Parent Lesson:\', \'textdomain\' ),
    \'edit_item\'         => __( \'Edit Lesson\', \'textdomain\' ),
    \'update_item\'       => __( \'Update Lesson\', \'textdomain\' ),
    \'add_new_item\'      => __( \'Add New Lesson\', \'textdomain\' ),
    \'new_item_name\'     => __( \'New Lesson Name\', \'textdomain\' ),
    \'menu_name\'         => __( \'Lessons\', \'textdomain\' ),
);

$args = array(
    \'hierarchical\'      => true,
    \'labels\'            => $labels,
    \'show_ui\'           => true,
    \'show_admin_column\' => true,
    \'query_var\'         => true,
    \'rewrite\'           => array( \'slug\' => \'lesson\'),
);

register_taxonomy( \'lesson\', array( \'memory-cards\' ), $args );  

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

但是当我尝试的时候

example.com/lesson
“我获取未找到页面”错误。

就像我在对你的问题的评论中指出的那样,这实际上就是它的工作原理,其中术语slug需要在URL中指定。这就是为什么example.com/lesson/english (术语slug为english) 和example.com/lesson/french (术语slug为french) 工作,但不是example.com/lesson (未指定术语段塞)。

所以有一种方法example.com/lesson 通过设置has_archive 参数到lesson 注册CPT时memory-cards 通过register_post_type(). 例如:

register_post_type( \'memory-cards\', array(
    \'labels\'       => array(
        \'name\'          => \'Memory Cards\',
        \'singular_name\' => \'Memory Card\',
    ),
    \'public\'       => true,
    \'has_archive\'  => \'lesson\',
) );
但这也意味着,example.com/memory-cards, 这是您的memory-cards CPT(当has_archive 设置为true), 将不再显示CPT存档。

要解决此问题或保留默认存档URL,可以使用add_rewrite_rule() 为添加重写规则example.com/lesson, 像这样:

register_taxonomy( \'lesson\', \'memory-cards\', array(
    \'labels\'       => array(
        \'name\'          => \'Lessons\',
        \'singular_name\' => \'Lesson\',
    ),
    \'rewrite\'      => true,
    // ...other args here...
) );

add_rewrite_rule( \'lesson/?$\', \'index.php?post_type=memory-cards\', \'top\' );
add_rewrite_rule( \'lesson/page/(\\d+)/?$\', \'index.php?post_type=memory-cards&paged=$matches[1]\', \'top\' );
第二条重写规则将处理分页请求,例如example.com/lesson/page/2/.

结束

相关推荐

Custom Taxonomy - fields

我有一个称为项目的自定义分类法,它有一个称为公寓的自定义post类型,两者都有acf自定义字段。我想将分类法创建的项目及其acf字段放在某个页面上,例如项目1、项目2。我创建了taxonomy-projects\\u公寓。php并将其用作模板,用于名为“项目”的页面。$args = array( \'taxonomy\' => \'projects\', \'orderby\' => $orderby, \'show_count