检查筛选器中是否设置了变量

时间:2010-12-02 作者:wpStudent

多亏了你的建议,我启用了wp\\U调试并发现了插件的缺陷。我有一个按投票对帖子进行排序的过滤器。当sort URL参数已启用。

add_filter( \'posts_where\', \'votes\', 10, 2 );

我以前Undefined index: sort 所以我修改了我的函数,首先检查变量是否已设置。

function votes( $where, $query )
{
  $sort = array_key_exists(\'sort\', $query->query_vars) ? $_GET[\'sort\'] : null;
  if ( isset($sort) ) {         
       $where .= " AND $sort >= votes";               
  }
  return $where;
}
这很好,但我不确定它是否正确。我想知道是否有更好的方法来做到这一点。

2 个回复
最合适的回答,由SO网友:Jeff Stieler 整理而成

已命名的变量$query 实际上是应用了筛选器的WP\\u查询实例。

您只需调用其函数get 检索查询变量。

例如:

function votes( $where, $query )
{
    $sort = $query->get(\'sort\');
    if (!empty($sort)
        $where .= " AND $sort >= votes";
    return $where;
}

SO网友:hakre

如果您检查$query->query_vars 先用后用$_GET[\'sort\'] 稍后,您刚刚检查或使用了错误的变量。我想这是你编辑剧本时发生的。

您可能想写以下内容:

 $sort = array_key_exists(\'sort\', $query->query_vars) ? $query->query_vars[\'sort\'] : null;

结束

相关推荐

在single.php中获取下一个帖子

我真的需要你的帮助。在我的单曲里。php我必须在同一类别中获得下一篇帖子(我已经拥有了:$in\\u same\\u cat=真;$excluded\\u categories=“”;$上一个=假;$next\\u post=获取\\u相邻的\\u post($in\\u same\\u cat,$excluded\\u categories,$previous);)现在我需要next next 立柱和相反方向previous previous 邮递thanx公司