我网站上的一篇特定帖子有一个短代码,它使用一个名为“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
注册“查询”,但没有成功。
如果有人能透露一些信息,我将不胜感激。
最合适的回答,由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