add_query_arg not working

时间:2010-11-30 作者:wpStudent

我添加了一个过滤器,以便在类别中导航时将参数附加到URL上。当浏览类别时,仅当sort 参数已设置。

例如,单击“查看投票最多的所有帖子”时,将显示投票率较高的帖子。在这里,您可以通过添加sort=most_votedsort=doleast_voted 到URL,使用cat=?.

add_filter( \'category_link\',\'append_parameter\', 10, 2 );

function append_parameter( $link, $query ) {
$my_parameter = $query->query_vars[\'sort\']; //get sort value
if ( isset($my_parameter) ) { //if browsing posts by votes
    $link = add_query_arg( \'sort\', $my_parameter, $link );
}
    return $link;
}
我不明白为什么排序参数没有附加到URL。但是,如果没有if语句和值而不是$my_parameter 在add\\u query\\u参数中。

编辑:新工作代码

    add_filter( \'category_link\',\'append_parameter\', 10, 2 );

    function append_parameter( $link, $my_parameter ) {
    $my_parameter = $_GET[\'sort\']; //get sort value       
    if ( isset($my_parameter) ) { 
        $link = add_query_arg( \'sort\', $my_parameter, $link );
    }
        return $link;
    }

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

如果你看看category_link 挂钩在中定义category-template.php 您将看到这个特定的钩子传递两个变量。第二个变量是类别ID,但回调函数将第二个传入变量视为查询对象。

简单地说,您正在寻找query_vars 由于传入变量不是查询对象,因此不存在且不能存在的属性/键。

结束