我有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\' );
我做错了什么?
最合适的回答,由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\' );