添加_重写规则和添加_查询_var的精美链接

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

我试图将一个变量从url传递到wordpress帖子中。

1) 我在函数中添加了add\\u query\\u var。php,从url检索查询字符串

add_filter( \'init\', \'add_model_more_query_var\' );
function add_model_more_query_var()
{
    global $wp;
    $wp->add_query_var( \'model_more\' );
}
2)我可以通过以下方式检索帖子中的变量:

get_query_var( \'model_more\', 1 );
我使用的url结构是:

领域com/帖子类型/帖子标题/?model\\u more=5

https://www.domain.com/model/benz/?model_more=5

https://www.domain.com/model/audi/?model_more=4

https://www.domain.com/model/ford/?model_more=12

现在,我正在尝试使URL美观,并从

https://www.domain.com/model/benz/?model_more=5

https://www.domain.com/model/benz/model_more/5/

这就是我被困的地方。

我有以下重写规则,但当我尝试访问漂亮的url时,我得到了404:

add_action(\'init\',\'add_model_more_rewrite_rule\');
function add_model_more_rewrite_rule()
{
    add_rewrite_rule(
        \'^model_more/(\\d*)$\',
        \'index.php?model_more=$matches[1]\',
        \'top\'
    );
}

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

正则表达式有几个问题:

^model_more/(\\d*)$
^--- Says "match start of line"
在URL中,行的开头实际上是/model/, 所以^model_more 永远不会匹配。相反,请尝试这样的正则表达式:

^model/[^/]+/model_more/(\\d+)/?$
  • [^/]+ 说“匹配除/, 因为我猜下面有多个模型/model/.
  • (\\d+) 确保仅捕获数字-(\\d*) 将捕获数字后的任何内容
  • /?$ 表示“行的结尾可能前面有斜杠,但不一定是。”Edit: 您可以在以下位置看到regex正在运行https://regex101.com/r/OhOFTD/1

结束

相关推荐