重写自定义发布类型URL插件

时间:2017-02-17 作者:Andreas Therkildsen

您好StackExchange WP\\U开发:)

这件事让我有点为难,我当然希望你能进一步咨询我。我正在帮助建立一个WordPress网站,它是作为“单一网站”构建的。欺骗我的是URL重写。

我在网上四处寻找解决方案,但运气不好。

现场结构如下

-Main page - Page template
 --City 1 - Page template
   ---VIP - Page template
      ----VIP subpage - Page template
 --City 2 - page template
   ---VIP - Page template
      ----VIP subpage - Page template
 --City 3 - page template
   --- EVENTS - Page template
      ----CPT which redirects out of stucture(single event)
以下是URL结构的示例:

Current URL(page templates): www.example.com/city/region/vip
Current URL(for the CPT): www.example.com/event/region/beer-pong/
Desired URL(for the CPT): www.example.com/city/region/event/beer-pong
我的注册帖子类型使用以下内容:

\'rewrite\'            => array( \'slug\' => \'byer/event\' ),
\'hierarchical\'       => true,
\'has_archive\'        => false,
\'supports\' => array( \'title\', \'editor\', \'thumbnail\', \'page-attributes\'),
通常在WordPress中进行开发时会有一种安静的幻想,但我无法将我的想法围绕在这一点上。。。。

不幸的是,URL格式是必不可少的,因为为站点/页面的“层”开发了逻辑。

我希望所提供的信息足以启发您。

我想要的:重写此URL:/event/region/beer-pong/包含城市:City/region/event/beer-pong

我拥有的:目前我的事件是作为自定义帖子类型而不是页面制作的,很遗憾,这不能更改,因为客户端不允许。

我需要你的帮助来解决这个问题!

1 个回复
SO网友:The GTMD

如果城市和地区总是cityregion 字符串,你可以这样做。

对于您的具体情况,您可以这样做:

\'rewrite\'            => array( \'slug\' => \'city/region/event\' ),
\'hierarchical\'       => true,
\'has_archive\'        => false,
\'supports\' => array( \'title\', \'editor\', \'thumbnail\', \'page-attributes\'),
如果城市变为某个城市,而区域变为URL中的某个区域,即城市变为London 而区域成为South East, 你必须使用global $wp_rewrite 并编写正则表达式来更改添加段塞。

您可以在WordPress Codex上找到更多文档-https://codex.wordpress.org/Class_Reference/WP_Rewrite.

相关推荐

Prevent Archive URLs

如果我在URL后添加一年,我的Wordpress站点就会查找存档页。例如:http:/mysiteurl.com/my-site/2018. 如果今年有帖子,它最终会重定向到index.php 出于某种原因。如果那一年没有帖子,就会转到404页,这就是我想要的。例如:http:/mysiteurl.com/my-site/2014 转到404页,因为那年没有帖子,这就是我想要的。我的永久链接结构设置为Post name 是这样的http:/mysiteurl.com/my-site/sample-post