首页 > 解决方案 > CPT 和父页面的自定义永久链接。高级WordPress

问题描述

所以,我创建了一个 CPT - Community Posthttps

://pastebin.com/9XSrvZAr 对于这个 CPT,我创建了两个自定义分类:https ://pastebin.com/fNhfpiM6

  1. community_post_domain
  2. community_post_type

我的目标是所有单个社区帖子的永久链接如下:
https://example.com/community/%POST_DOMAIN_SLUG%/%POST_SLUG%
例如,如果我有一个标题为“Go Micro”的社区帖子Services',并且它已community_post_domain设置为一个名为 的术语Kubernetes,永久链接将是:
https ://example.com/community/kubernetes/go-micro-services 。

这就是我进行永久链接操作的方式: https ://pastebin.com/aP5rEBjY

另外,我创建了一个静态页面:Community,它具有永久链接:https://example.com/community
到目前为止,一切都很好。当我尝试发布一个页面并且我希望它具有这样的永久链接时,就会出现问题:https://example.com/community/%PAGE_SLUG%
我创建了这个页面,比如说,Hello World. 我将父级设置为Community页面。当我单击Publish时,页面被创建,在 WordPress 仪表板中,我看到该页面的永久链接符合预期:https
: //example.com/community/hello-world 但是,这是实际的问题- 当我试图访问页面的永久链接,我得到 404。
我试着去Permalinks在 WP 仪表板中并更新永久链接,没有帮助。这里有什么想法吗?

标签: phpwordpress

解决方案


假设通常我们不会有太多的页面(5-10),解决这个问题的最简单和最快的方法是不重写所有内容,为每个页面编写单独的 rewrite_rules。

add_rewrite_rule(
    '^community/hello-world/?',
    'index.php?page_id=123',
    'top'
); 

你的问题的基础是这条线

'rewrite' => array( 'slug' => 'community', 'with_front' => false ),

当您注册自定义分类时,您使用

'slug' => 'community'

现在 wordpress 认为在这个链接https://example.com/community/hello-world/

hello-world = 分类蛞蝓

要更准确地诊断此类问题并查看当前页面上使用的重写规则 - 试试这个插件https://wordpress.org/plugins/query-monitor/


推荐阅读