固定链接不适用于自定义帖子类型的自定义分类

时间:2016-12-31 作者:Joshua Goossen

我有一个自定义的帖子类型,注册如下:

register_post_type( \'gs_business_listings\',
    array(
      \'labels\' => array(
        \'name\' => __( \'Local Businesses\' ),
        \'singular_name\' => __( \'Local Businesses\' )
      ),
      \'public\' => true,
            \'taxonomies\'  => array( \'category\', \'gs_business_listing_region\' ),
      \'has_archive\' => true,
            \'supports\' => array(\'title\', \'editor\', \'thumbnail\', \'revisions\'),
            \'register_meta_box_cb\' => array($this,\'add_meta_boxes\'),
            \'rewrite\' => array(\'slug\'=> apply_filters(\'goosesoft-coupons-archive-url\', \'local-businesses\'))
            )
  );
对于这种自定义帖子类型,我有一个自定义分类法,注册如下:

register_taxonomy(
            \'gs_business_listing_region\',
            \'gs_business_listings\',
            array(
                \'labels\' => array(
                    \'name\' => \'Regions\',
                    \'singular_name\' => \'Region\',
                ),
                \'rewrite\' => array( \'slug\' => \'region\', \'hierarchical\' => true ),
                \'hierarchical\' => true,
                \'has_archive\' => true,
            )
        );
这在管理方面起作用。一切如期而至。Regions 在中显示Local Businesses 子菜单。我可以保存特定帖子的区域。

但是permalinks并没有为分类法工作。我所需要的似乎很直截了当,将是我所期望的默认行为。我需要分类urlwww.example.com/region/a-region 哪里a-region 是分类法之一。但当我访问这样的url时,它就不起作用了。更令人费解的是get_term_link() 返回的url格式与此完全相同,但返回的链接上出现404错误。

我会错过什么?

1 个回复
SO网友:Joshua Goossen

我上面的代码没有问题。我在下面找到了答案Taxonomies page in the Codex:

如果您的站点使用自定义永久链接,则需要在更改分类后刷新永久链接结构,否则您可能会看到“找不到页面”错误。当您访问WordPress仪表板中的设置>永久链接时,永久链接结构将自动刷新。

在我的插件中,我已经flush_rewrite_rules(); 被要求停用,我已经停用并重新激活了好几次。这不起作用的事实让我大吃一惊。

但我一到Setting > Permalinks 一切正常!

相关推荐

Force pretty permalinks?

我正在构建一个插件,该插件将用于单个站点,并依赖于add_rewrite_rule 要工作,需要打开永久链接。打开它们并不困难,因为它只是一个站点,但我担心其中一个管理员可能会在不知道自己在做什么的情况下关闭它,并破坏该站点。如何以编程方式强制保持漂亮的永久链接?