ADD_REWRITE_RULE忽略除“p”参数以外的其他参数

时间:2018-11-08 作者:Adriano Castro

我网站上的一篇特定帖子有一个短代码,它使用一个名为“query”的参数来生成内容。这是一个工作URL的示例:

https://example.com/my-post?query=980
“我的帖子”是帖子的永久链接,页面正确使用了“query”参数。

但是,我们需要将此URL更改为友好的URL,如https://example.com/something-here/980 然后我试着用add_rewrite_rule 像这样:

function custom_add_rewrite_rules() {
    add_rewrite_rule(
        \'^something-here/([\\d]+)$\',
        \'index.php?p=10219&query=$matches[1]\',
        \'top\'
    );
}
add_action(\'init\', \'custom_add_rewrite_rules\');
当我尝试访问友好URL时,我会被重定向到https://example.com/my-post 成功,但query 参数为空($_GET["query"] = null).

我还试着利用add_rewrite_tag 注册“查询”,但没有成功。

如果有人能透露一些信息,我将不胜感激。

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

听起来插件希望有一个get参数。

您的重写规则是在插件使用get参数之前删除它。

如果插件已经很长时间没有更新了(它是弃用软件),那么您可以检查该插件并将get参数替换为url中的get参数部分。只需确保在编辑后阻止插件更新即可。

如果您添加以下内容

function custom_add_rewrite_rules() {
  add_rewrite_tag(\'%query%\',\'([^&]+)\');

  add_rewrite_rule(
      \'^something-here/([\\d]+)$\',
      \'index.php?p=10219&query=$matches[1]\',
      \'top\'
  );
}
add_action(\'init\', \'custom_add_rewrite_rules\');
&;然后更换$_GET[\'query\'] &/或$_REQUEST[\'query] 具有get_query_var( \'query\' ) 在您所描述的插件中,这应该足以实现此目的。

Stephen Harris sums it up nicely in the answer here

结束

相关推荐