按类别页面上的查看数查询帖子

时间:2015-01-21 作者:Chozen

我在尝试创建该类别的第二个查询时遇到问题。php页面,我试图实现的是显示当前类别存档页面中最受欢迎的帖子。

这就是我目前所拥有的。

<?php // The Query
    global $wp_query;

    $term = $wp_query->queried_object;

    $args=array(
        \'meta_key\' => \'views\',
        \'orderby\' => \'meta_value_num\',
        \'order\' => \'DESC\',
        \'posts_per_page\' => 5,
        \'post_type\' => \'post\',
        \'tax_query\' => array(
                array(
                    \'taxonomy\'  => $term->taxonomy,
                    \'field\'     => \'slug\',
                    \'terms\'     => $term->slug,
                    )
                )
        );

    $new_query = null;
    $new_query = new WP_Query($args);

    while ($new_query->have_posts()) : $new_query->the_post(); ?>

    <?php include(TEMPLATEPATH.\'/category-slider.php\'); ?>

<?php
    endwhile;
    wp_reset_postdata(); ?>
现在大多数情况下,它都能正常工作,但我唯一的问题是,无论我设置了多少个数字,每页的posts\\u都只能返回一篇帖子。

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

不要取消主查询,这会破坏内容。此外,避免使用$wp_query 全局作为自定义变量。这会中断主查询并导致问题。您也可以尝试添加\'suppress_filters\' => true, 如果您使用任何自定义过滤器,请将其添加到参数中以抑制任何自定义过滤器。

另外,不要使用TEMPLATEPATH, 根据最近的一张轨道票,它将被折旧。使用get_template_part() 相反

尝试以下操作

<?php // The Query
    global $wp_query;

    $term = $wp_query->queried_object;

    $args=array(
        \'meta_key\' => \'views\',
        \'orderby\' => \'meta_value_num\',
        \'order\' => \'DESC\',
        \'posts_per_page\' => 5,
        \'post_type\' => \'post\',
        \'suppress_filters\' => true,
        \'tax_query\' => array(
                array(
                    \'taxonomy\'  => $term->taxonomy,
                    \'field\'     => \'slug\',
                    \'terms\'     => $term->slug,
                    )
                )
        );

    $new_query = new WP_Query($args);

    while ($new_query->have_posts()) : $new_query->the_post(); ?>

    <?php get_template_part( category-slider ); ?>

<?php
    endwhile;
    wp_reset_postdata(); ?> 
除此之外,除了使用query_posts 页面上的某个地方会破坏一切

结束