wordpress query_posts 归档问题

Posted

技术标签:

【中文标题】wordpress query_posts 归档问题【英文标题】:wordpress query_posts in archive issue 【发布时间】:2012-04-13 00:43:11 【问题描述】:

我想让每个类别中的所有帖子都根据其分数下降(使用 GD 星级插件)。 我在插件站点中发现,我需要在我的archive.php 文件中添加query_posts("gdsr_sort=rating");

这就是我的 archive.php 添加了 query_posts 后的样子:

    <?php query_posts("gdsr_sort=rating"); ?>
<?php while (have_posts()) : the_post(); ?>
    <div <?php post_class() ?>><li>
        <h1><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1>

        <?php if ( has_post_thumbnail() ) : ?>
            <a href="<?php the_permalink() ?>"><?php the_post_thumbnail(); ?></a>
        <?php endif; ?>

        <?php the_content('Read more...'); ?>
    </li>
    </div>
    <?php endwhile; ?>
        <div class="clear"></div>
    <?php wp_reset_query(); ?>

它搞砸了,所以我尝试使用query_posts('posts_per_page=5'); 好消息是它每页显示 5 篇文章。 坏事是它显示了错误的文章。准确地说,无论我去哪个子类别……都会显示相同的文章,这些文章不应该在那个子类别中。当您转到下一页时.. 正在显示相同的文章。这些随处可见的文章仅属于 1 个子类别。 我还应该提到,我有 10 个类别,每个类别都有 2-3 个子类别..

我在这里不知所措,希望你能理解我的解释。

【问题讨论】:

您希望您的文章来自哪个类别? 【参考方案1】:

您可以修改 wordpress 查询,而不是进行新查询。我不知道您使用的插件,但我认为这应该可以工作:

function change_archive_query( $query ) 
    if ( $query->is_main_query() && $query->is_archive()) 
         $query->set( 'gdsr_sort', 'rating' );
    

add_action( 'pre_get_posts', 'change_archive_query' );

你可以把它放在你的functions.php中。在archive.php 你可以删除query_posts

【讨论】:

工作就像一个魅力。谢谢你:)

以上是关于wordpress query_posts 归档问题的主要内容,如果未能解决你的问题,请参考以下文章

说说WordPress的主查询函数-query_posts()

按年份“query_posts()”问题的 Wordpress 存档

在 query_posts 中获取 WordPress 中的所有帖子类型

WordPress主查询函数query_posts用法汇总

PHP Wordpress:在query_posts之后重置分页

隐藏/显示 Query_post ( wordpress ) 的 Div 结果的 jquery 切换