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

例如,当您单击以大多数选票的方式查看所有帖子时,将显示高票的帖子。从那里您可以通过附加一个类别查看大多数投票的帖子 sort=most_voted 或者 sort=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_query_arg中。

编辑:新的工作代码

    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;
    }
有帮助吗?

解决方案

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

简而言之,您正在寻找 query_vars 不存在也不存在的属性/键,因为传入变量不是查询对象。

许可以下: CC-BY-SA归因
scroll top