<?php
query_posts(
array(
\'showposts\' => $number,
\'nopaging\' => 0,
\'download_category\' => $term->name,
\'orderby\' => \'meta_value_num\',
\'meta_key\' => \'post_views_count\',
\'order\' => \'DESC\',
\'post_type\' => array( \'download\' ),
\'post_status\' => \'publish\'
)
);
while ( have_posts() ) : the_post();
?>
此查询所做的是对视图最多的页面进行排序。
现在我想做的是把它变成一个可点击的链接,比如:“大多数视图”。然后,当您单击Most views链接时,页面将根据Most视图进行排序。
编辑:
我真的应该提供更多关于这个问题的信息:我们使用自定义音乐模板和简单的数字下载。http://www.dl-sounds.com
正如您所看到的,有一个小部件带有“最受欢迎”。我提供的代码来自这个小部件。中间有一个盒子,里面有“最新的音频文件”。在此框中,我想添加一个链接,以便访问者可以按大多数视图对音频进行排序。
确切地说,我想在排序栏中添加一个链接(浏览|类型|标记)。排序栏是一个php文件。
我已经对类别进行了一些测试。我使用php类别中的上述查询更改了此查询。
<?php /* Genre Query */ query_posts( array( \'post_type\' => \'download\', \'posts_per_page\' =>\'100000\', \'download_category\' => $term->name ) );while ( have_posts() ) : the_post(); ?>
这很好用。然后,如果我浏览类别,它将按大多数视图自动排序。(试验现场)
SO网友:Johansson
您可以将查询字符串添加到URL,然后在设置了该字符串的情况下更改查询。我要做的是pre_get_posts
修改主查询。
function sort_by_views($query) {
if (
!is_admin() &&
$query->is_main_query() &&
$query->is_home() &&
isset( $_REQUEST[\'sort_by_views\'] )
) {
$query->set( \'post_type\', \'download\');
$query->set( \'post_status\', \'publish\' );
$query->set( \'posts_per_page\', $number );
$query->set( \'nopaging\', false );
$query->set( \'orderby\', \'meta_value_num\' );
$query->set( \'meta_key\', \'post_views_count\' );
$query->set( \'order\', \'DESC\' );
}
}
add_action( \'pre_get_posts\', \'sort_by_views\' );
现在,如果您导航到
http://example.com/?sort_by_views=blabla
, 您的帖子将按视图数排序。
此示例适用于主页上的主查询,但您可以根据需要更改条件以满足任何条件。
一个重要注意事项是不要使用query_posts
. 使用WP_Query
相反使用query_posts
将更改主查询的数据,这可能会干扰您的内容。