我的类函数没有看到GET URL参数

时间:2011-12-30 作者:josh

我已经设置了一组变量,在我的插件函数文件中使用add\\u filter创建:

    add_filter(\'query_vars\', \'user_country_var\' );
add_filter(\'query_vars\', \'user_lat_var\' );
add_filter(\'query_vars\', \'user_lon_var\' );
然后,我用来处理过滤器的一些代码引用了它。当代码被插入到模板文件中时,这种方法工作得很好。我正试图收拾东西,我被难住了。

我将以下函数放在一个类中,它当前在init中调用,并且肯定存在(与其他一些工作正常的代码放在一起)。但它只是没有从我的url中获取变量,所以输出回退“你的国家”:

// pull variable from url
if (isset($wp_query->query_vars[\'country\']))
    {
    $this->user_country = $wp_query->query_vars[\'country\'];
    }
    else { $this->user_country = \'your country\'; }


if (isset($wp_query->query_vars[\'lat\']))
    {
    $this->user_lat = $wp_query->query_vars[\'lat\'];
    }
    else { $this->user_lat = \'52.5\'; }

    if (isset($wp_query->query_vars[\'lon\']))
        {
        $this->user_lon = $wp_query->query_vars[\'lon\'];
        }
        else { $this->user_lon = \'13.4\'; }
有什么原因不能获取变量吗?正如我所说的,它可以很好地设置类的公共变量的默认值并执行。只是没有得到变量,即使变量在那里。。。

如果有帮助的话,我可以发布更多的代码,或者确实可以澄清。提前感谢您的任何想法!

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

正如我所说,我只是错过了使用全局$wp\\u查询的声明,所以它没有访问我的过滤器。

以下是在有帮助的情况下有效的方法:

global $wp_query;
// pull variable from url
    if (isset($wp_query->query_vars[\'country\']))
        {
        $this->user_country = $wp_query->query_vars[\'country\'];
        }
        else { $this->user_country = \'your country\'; }


    if (isset($wp_query->query_vars[\'lat\']))
        {
        $this->user_lat = $wp_query->query_vars[\'lat\'];
        }
        else { $this->user_lat = \'52.5\'; }

        if (isset($wp_query->query_vars[\'lon\']))
            {
            $this->user_lon = $wp_query->query_vars[\'lon\'];
            }
            else { $this->user_lon = \'13.4\'; }

结束

相关推荐

hooks & filters and variables

我是updating the codex page example for action hooks, 在游戏中完成一些可重用的功能(最初是针对这里的一些Q@WA)。但后来我遇到了一个以前没有意识到的问题:在挂接到一个函数以修改变量的输出后,我再也无法决定是要回显输出还是只返回它。The Problem: 我可以修改传递给do_action 用回调函数钩住。使用变量修改/添加的所有内容仅在回调函数中可用,但在do_action 在原始函数内部调用。很高兴:我将其修改为一个工作示例,因此您可以将其复制/粘贴