如果在提要URL中检测到查询字符串,则可以通过重写主查询结果来实现。?top_ten
为前十名添加查询变量:
function my_query_vars( $query_vars ) {
$query_vars[] = \'top_ten\';
return $query_vars;
}
add_filter( \'query_vars\', \'my_query_vars\' );
为您的代码创建一个函数,以作为查询检索前十名
function my_top_ten_query($limit, $query) {
if ( !function_exists( \'get_tptn_pop_posts\' ) ) {return $query;}
$settings = array(
\'daily\' => TRUE,
\'daily_range\' => 30,
\'limit\' => 20,
\'strict_limit\' => FALSE,
);
$topposts = get_tptn_pop_posts( $settings ); // Array of posts
$topposts = wp_list_pluck( (array) $topposts, \'postnumber\' );
$args = array(
\'post__in\' => $topposts,
\'orderby\' => \'post__in\',
\'posts_per_page\' => $limit,
\'ignore_sticky_posts\' => 1
);
$my_query = new WP_Query( $args );
return $my_query;
}
然后过滤主查询以检查查询字符串,并返回前十个查询,而不是标准提要查询:
function my_feed_posts_filter( $query ) {
// only for feeds
if ( $query->is_feed && $query->is_main_query() ) {
// check if the top_ten variable is set
if ( isset( $query->query_vars[\'top_ten\'] )
&& ! empty( $query->query_vars[\'top_ten\'] ) ) {
// return your top ten query object instead
return my_top_ten_query($query->query_vars[\'top_ten\'], $query);
}
}
return $query;
}
add_filter( \'the_posts\', \'my_feed_posts_filter\' )
解决方案改编自
this answer on custom feed queries.