带有2个变量的WordPress添加_重写_规则

时间:2019-03-14 作者:Dominick Allen

我需要创建一个接受2个变量的重写规则。我对这一点很陌生,不确定自己是否走上了正确的轨道。如果有更好的解决方案来解决我想要实现的目标,我愿意听取建议。

url应该如下所示:localhost/states/id/state slug

以下是我所拥有的:

function prefix_movie_rewrite_rule() {

add_rewrite_rule ( \'states/([A-Za-z0-9\\-\\_]+)\', \'index.php? 
state_id=$matches[1]\', \'top\' );

add_rewrite_rule ( \'states/([A-Za-z0-9\\-\\_]+)/state([A-Za-z0-9\\-\\_]+)\', 
\'index.php?state_id=$matches[1]&state=$matches[2]\', \'top\' );

}

add_action( \'init\', \'prefix_movie_rewrite_rule\');
使用我所拥有的,我可以得到第一个变量(state\\u id),但不能得到第二个变量(state)。

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

在我做了很多努力之后,我发现了问题所在。

我需要使用add\\u rewrite\\u tag()函数来告诉wordpress允许我的查询变量。

function prefix_movie_rewrite_rule() {

add_rewrite_tag(\'%state_id%\', \'([A-Za-z0-9\\-\\_]+)\');
add_rewrite_tag(\'%state%\', \'([A-Za-z0-9\\-\\_]+)\');
add_rewrite_rule ( \'states/([A-Za-z0-9\\-\\_]+)/([A-Za-z0-9\\-\\_]+)\', \'index.php? 
state_id=$matches[1]&state=$matches[2]\', \'top\' );

}

add_action( \'init\', \'prefix_movie_rewrite_rule\');

相关推荐

GET_SHORTCODE_regex()只与第一个短码匹配

法典中有an example 使用get\\u shortcode\\u regex()检查是否在给定页面上调用了短代码:$pattern = get_shortcode_regex(); preg_match(\'/\'.$pattern.\'/s\', $posts[0]->post_content, $matches); if (is_array($matches) && $matches[2] == \'YOURSHORTCODE\') { /