0

当我添加/编辑帖子时,我可以更改永久链接的 slug。但我不能添加斜杠。所以假设我有

http://domain.com/myslug

但是我需要

http://domain.com/myslug1/myslug2

当我保存它时

http://domain.com/myslug1myslug2

我该如何克服呢?

4

1 回答 1

0

比如说,当您访问一个页面时domain.com/careers,WordPress 必须确定要从数据库中检索哪个帖子。

它将查看其所有重写规则并尝试找到与请求匹配的规则。在这种情况下,最后一条规则将捕获它:

[(.?.+?)(/[0-9]+)?/?$] => index.php?pagename=$matches[1]&page=$matches[2]

它将传入careers( $matches[1]) 作为pagename值,相应地对其进行剖析,然后在数据库中查找名为 的帖子careers

当您访问名为 的页面domain.com/careers/internships时,最后一条规则将再次适用。这次它将传入careers/internships,对其进行相应的剖析,将帖子的父级设置为careers,然后在数据库中查找internships与父级匹配的帖子。

如果 WordPress 允许您将 slug 设置为myslug1/myslug2,那么 WordPress 所做的一些假设将是错误的。

  1. 没有调用父页面myslug1
  2. 没有页面调用myslug2
  3. 没有重写规则让 WordPress 知道如何处理myslug1/myslug2slug

话虽如此,仍然有可能完成你想要的,但也许不会以随意编造蛞蝓的方式。必须有一个模式,某种规则,你可以给 WordPress 说“如果 x,那么 y”。

例如,您可以有一个带有输入字段的元框,只要您在其中输入内容,该 slug 就会出现在 URL 的末尾。或者,也许您可​​以在domain.com和之间夹入一个自定义 slug myslug2

以下是一些需要研究的事项:

  1. add_rewrite_rule函数 - 允许您指定额外的重写规则
  2. add_rewrite_tag函数 - 让 WordPress 了解自定义查询字符串变量
  3. query_vars过滤器 - 允许在执行查询之前操作查询变量
  4. template_redirect操作 - 在 WordPress 确定要加载的模板页面之前执行

另一种方法可能是创建一个父页面,myslug1然后创建一个子页面myslug2。或者,根据您的需要,您还可以查看自定义帖子类型。您可以调用一个自定义帖子类型myslug1,然后在其中发布一个帖子,其中一个帖子是myslug2.

如果您对实现上述任何一项有具体问题,请查看 Stack Overflow 或在找不到答案的情况下发布另一个包含详细信息的问题。

于 2013-10-04T17:03:15.113 回答