【问题标题】:Rewrite rule for my own PHP file in Wordpress在 Wordpress 中为我自己的 PHP 文件重写规则
【发布时间】:2014-09-11 08:21:49
【问题描述】:

我有问题。我在 Wordpress 中有自己的 PHP 文件,我可以在 URL 上使用他,例如: http://www.domain.tld/wp-content/themes/theme/filter.php?foo=arg1&fo=arg2

但我想在像 http://www.domain.tld/filter/arg1/arg2/ 这样的 URL 上使用这个文件。有可能吗?

谢谢!

【问题讨论】:

  • 既然你把它标记为[rewrite],你已经知道你需要使用mod_rewrite。您是否在寻找 mod_rewrite 指南?你试过什么?
  • 我尝试了 htaccess 示例(codex.wordpress.org/User:Amereservant/…)和这个wordpress.stackexchange.com/questions/5413/…,但我不知道我必须在哪里插入代码。在functions.php中是不活动的。
  • 为它创建一个插件是大多数人都会这样做的方式
  • @user3858685 然后你应该将这些细节添加到问题中,它们将帮助未来的读者更好地识别问题。

标签: php wordpress file rewrite rule


【解决方案1】:

您可以使用add_rewrite-rule()
像这样的:

add_rewrite_rule(
        '^filter/([^/]*)/([^/]*)/?',
        'wp-content/themes/theme/filter.php?foo=$matches[1]&fo=$matches[2]',
        'top'
        );

add_rewrite_tag('%foo%', '([^&]+)');
add_rewrite_tag('%fo%', '([^&]+)');

那么在filter.php中,你需要使用get_query_var而不是普通的php $_GET,例如:

//echo $_GET['foo']; wont work
echo get_query_var('foo');

【讨论】:

  • 谢谢,但是当我把这段代码放到functions.php中时,什么都不会发生。我在哪里插入此代码? functions.php 是正确的目的地吗?
  • 真实示例:我有这个 php 文件:collegesnearme.org/wp-content/themes/flatads/…,它给我带来了正确的结果。但是你在functions.php中的代码是collegesnearme.org/filter/filip/peter上的结果,和以前一样:-(
  • 是的,把它放到你的functions.php文件中,然后通过登录后端并访问永久链接设置页面来刷新重写规则。
  • 最后一件事 - 当我使用它时,我看不到我的变量 - 只有 $matches[1]。为什么?示例:collegesnearme.org/filter/filip
  • 好的,经过研究,它有点复杂。看我的编辑,这篇文章值得一看:paulund.co.uk/rewrite-urls-wordpress
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-11
  • 2010-12-06
  • 2023-01-27
  • 1970-01-01
  • 1970-01-01
  • 2014-04-30
  • 1970-01-01
相关资源
最近更新 更多