只要我使用筛选器添加一个定制的Query_var,我的页面就指向一个归档页面-为什么?

时间:2011-06-24 作者:Tom Auger

在这个堆栈交换中,有一百万篇关于这个主题的帖子,但由于某种原因,我无法让它为我工作。我想知道我做错了什么?

在我的功能中。php我定义如下:

add_filter(\'query_vars\', \'add_quote_query_vars\');
function add_quote_query_vars($qv){
    $qv[] = \'xx-quote\';
    return $qv;
}
然后,在首页。php我提供了一个链接,将其嵌入URL:

echo  \'<a href="\'.add_query_arg(\'xx-quote\', $quote->ID).\'">\';
有两件事出错了。1: 如果,在我的模板页I上print_r($wp_query->query_vars);, 我的“xx quote”没有出现在列表2中:只要我真正尝试将其包含在URL中(通过单击链接,URL就是http://mysite.com/blog/?xx-quote=555) 我被带到了归档页面,而不是预期的头版。

#2的有趣之处在于,只要我删除query_vars 过滤并再次单击该链接,我将按预期正确进入首页。

我只是不理解query\\u vars的作用吗?这是预期的行为吗?还是我在错误的时间调用了过滤器(我尝试过将其包装在init操作中,甚至在functions.php中)?

我知道我可以忽略所有这些,因为我正在处理首页。无论如何,只要使用$\\u REQUEST[\'xx-quote\'],但这似乎根本不是一个最佳实践,我正在尝试用“WordPress方式”。。。

不用说,以下代码不会产生任何结果:

global $wp_query;
echo $wp_query->query_vars[\'xx-quote\'];
这就是我困惑的基础。我已经阅读了这个SE上的所有相关帖子,我似乎做的每件事都是对的。很明显我没有-出什么问题了?

2 个回复
SO网友:PaulMighty

我也遇到过类似的问题,可追溯到Yoast的WordPress SEO插件。这是一个非常流行的插件,所以我想发布我的补丁。如果正在运行此插件,请执行以下操作:

导航到SEO>永久链接是否选中“重定向丑陋URL以清理永久链接”

SO网友:Rarst

使用过滤器激活的快速测试中的最后一个测试片段对我来说很好。如果有,我也不会从主页重定向。

所以,不是你的方法错了,而是有什么东西打破了它。

结束

相关推荐

Changing attachment urls?

如何更改附件页URL的格式/[post-url]/[attachment-name]/ 到/media/[attachment-name]/? 我知道我可以覆盖get_attachment_link 通过attachment_link 过滤器,但我想我需要更改重定向结构,以便WordPress知道如何处理这些URL?