为特定页面设置wordpress post的永久链接

时间:2013-10-04 13:06:13

标签: wordpress

当我添加/编辑帖子时,我可以更改永久链接的slu ..但我无法添加斜线。 所以假设我有

http://domain.com/myslug

但我需要

http://domain.com/myslug1/myslug2

当我保存时

http://domain.com/myslug1myslug2

我怎样才能克服这个?

1 个答案:

答案 0 :(得分: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的帖子。 / p>

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

  1. 没有名为myslug1
  2. 的父页面
  3. 没有名为myslug2
  4. 的网页
  5. 没有重写规则让WordPress知道如何处理myslug1/myslug2 slug
  6. 所有这一切,仍然可能实现你想要的东西,但也许不会妨碍弥补slu ..必须有一种模式,某种规则,你可以给WordPress说“if x,then y”。

    例如,你可以有一个带有输入字段的元框,无论何时你在其中输入内容,该slug都会出现在URL的末尾。或者也许你可以在domain.commyslug2之间夹住一个自定义的slu ..

    以下是一些要研究的内容:

    1. add_rewrite_rule function - 允许您指定其他重写规则
    2. add_rewrite_tag函数 - 让WordPress了解自定义查询字符串变量
    3. query_vars filter - 允许在执行查询之前操纵查询变量
    4. template_redirect操作 - 在WordPress确定要加载的模板页面之前执行
    5. 另一种方法可能是创建一个包含myslug1的父页面,然后创建一个包含myslug2的子页面。或者,根据您的需要,您还可以查看custom post types。您可以拥有一个名为myslug1的自定义帖子类型,然后在其中发帖,其中一个帖子为myslug2

      如果您有关于实施上述任何一项的具体问题,请查看Stack Overflow或如果找不到答案,请发布详细信息。