创建自定义帖子类型的新URL结构

时间:2018-01-26 作者:geoffs3310

我有3种自定义帖子类型:

我已经使用ACF在这些自定义帖子类型之间建立了一些关系,因此开发位于顶部,下面可以有许多house\\u类型。然后,一个房屋类型可以在其下方有许多房间。

我想修改url结构,使其具有层次结构,以便用户可以转到/{development},该页面将显示单个开发页面,列出开发中的所有house\\u类型。然后,如果他们单击某个户型,url将为/{development}/{house\\u type},并将显示单个house\\u type页面,该页面将列出该户型内的所有房间。最后,如果他们单击一个房间,url将为/{development}/{house\\u type}/{room},并将显示包含该房间信息的单人房间页面。

我已经尝试了很多事情,但还没有做到这一点。以下操作在一定程度上起作用,但在执行重定向时并不完美。比如,如果我转到/{development}/{house\\u type},它会重定向到/house types/{house type},这是正确的页面,但我不想更改URL。此外,如果我转到/{development}/{house\\u type}/{room},URL是正确的,但它显示的是单个开发页面,而不是单个room页面。

function my_rewrite_rules() {

    flush_rewrite_rules();

    add_rewrite_tag( \'%development%\', \'([^&]+)\' );
    add_rewrite_tag( \'%room%\', \'([^&]+)\' );
    add_rewrite_tag( \'%house-type%\', \'([^&]+)\' );

    add_rewrite_rule( \'^%development%/%room%/([^/]*)?\', \'index.php?room=$matches[1]\' );
    add_rewrite_rule( \'^%development%/([^/]*)?\', \'index.php?house_type=$matches[1]\' );
    add_rewrite_rule( \'^([^/]*)/?\', \'index.php?post_type=development&development=$matches[1]\' );
}
add_action( \'init\', \'my_rewrite_rules\' );
我做错了什么?

1 个回复
最合适的回答,由SO网友:geoffs3310 整理而成

最后排序。正如Milo所建议的,我不需要调用来添加\\u rewrite\\u标记。以下代码起作用:

/**
* Custom rewrite rules
*/
function my_rewrite_rules() {
    add_rewrite_rule( \'^([^/]*)/([^/]*)/([^/]*)?\', \'index.php?post_type=room&room=$matches[3]\', \'top\' );
    add_rewrite_rule( \'^([^/]*)/([^/]*)?\', \'index.php?post_type=house_type&house_type=$matches[2]\', \'top\' );
    add_rewrite_rule( \'^([^/]*)/?\', \'index.php?post_type=development&development=$matches[1]\', \'top\' );
}
add_action( \'init\', \'my_rewrite_rules\' );

结束

相关推荐

How to replace permalinks

我已将wordpress项目导出并导入live server。现在的问题是,我将permalink结构作为“localhost”格式。当我单击网站中的任何链接时,它会将我重定向到localhost。我怎样才能改变这一点?我的htaccess文件如下所示<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /myproject/ RewriteRule ^index\\.php$ - [L] RewriteCo