在wordpress中,像“localhost / category / test /?var = 123”这样的多级URL不能使用$ _GET ['var']?

时间:2013-03-25 16:19:16

标签: php wordpress web wordpress-plugin wordpress-theming

我正在为wordpress设计一个主题,但在向网址添加查询时,会出现问题:

这两种情况,我在文件类-wp.php中的WP-> parse_request(..)中使用$ _GET ['var']:

当url像这样“loscalhost /?var = 123”,$ _GET ['var']返回123;

当url像这样“localhost / category / test /?var = 123”时,它不起作用,$ _GET ['var']返回null。

有人可以告诉我这有什么问题吗?

2 个答案:

答案 0 :(得分:1)

WordPress旨在忽略它不期望的任何URL查询参数。如果要使用查询变量,则必须通知WordPress以期望它。在你的情况下:

function filter_add_query_vars($query_vars)
{   
    $query_vars[] = 'var'; 
    return $query_vars;
}
add_filter( 'query_vars', 'filter_add_query_vars' );

将代码放入主题的functions.php

答案 1 :(得分:0)

这是一个草率的解决方案:因为我甚至可以使用$ _GET来接收URL中的变量,例如wp-blog-中的“localhost / category / test /?var = 123”头文件,但我可以使用$ _SERVER ['REQUEST_URI']来检索整个URL,所以我更改了wp-blog-header.php中的代码。我改变了

wp();

是:

$url_array = explode('?', $_SERVER['REQUEST_URI']);
wp($url_array[1]);

它有效,因为wp()也会收到额外的查询。

但我仍然不明白为什么$ _GET不起作用,所以我也等待有效的解释......

相关问题