将URL变量重写为自定义路径

时间:2013-02-13 作者:David Garcia

我正在向我的url传递一些变量,以显示最新的帖子、查看次数最多的帖子等。

http://website.com/?r_sortby=highest_rated

我想知道如何为它创建一个自定义路径,而不是用于SEO目的。http://website.com/highest-rated/

帮助任何人:)

1 个回复
SO网友:Milo

您可以通过以下方式添加路径add_rewrite_endpoint, 然后通过pre_get_posts 行动下面是一个概念验证示例,它改变了posts_per_page 什么时候domain.com/highest-rated/ 请求:

// add the endpoint
function wpa85664_add_endpoint(){
    add_rewrite_endpoint( \'highest-rated\', EP_ALL );
}
add_action( \'init\', \'wpa85664_add_endpoint\' );


// check if the endpoint is in the current request
// and alter the query accordingly
function wpa85664_check_endpoint( $query ){
    if( array_key_exists( \'highest-rated\', $query->query_vars ) )
        $query->set( \'posts_per_page\', -1 );
}
add_action( \'pre_get_posts\', \'wpa85664_check_endpoint\' );
您可以使用此方法更改任何相关的查询变量,例如元查询,以按评级对帖子进行排序。

结束

相关推荐