query_posts() 是一个 WordPress 函数,用于修改主循环中的查询参数。它允许你根据自定义参数筛选文章,而不是使用默认的所有文章查询。

以下是一个使用 query_posts() 的示例,该示例在自定义循环中显示最近的 5 篇文章:

<?php
// 使用 query_posts() 自定义查询参数
query_posts(array(
    'posts_per_page' => 5, // 显示 5 篇文章
    'orderby' => 'date',    // 按日期排序
    'order' => 'DESC'       // 降序排列,最近的文章在前
));
// 开始循环
if (have_posts()) : while (have_posts()) : the_post(); ?>
    <div class="post">
        <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
        <p><?php the_excerpt(); ?></p>
        <p>Posted on <?php the_time('F jS, Y'); ?> by <?php the_author(); ?></p>
    </div>
<?php endwhile; else: ?>
    <p>Sorry, no posts to display.</p>
<?php endif; ?>
// 重置查询
wp_reset_query();
?>

在这个示例中,我们使用 query_posts() 函数来自定义查询参数。我们设置 posts_per_page 为 5,以便只显示最近的 5 篇文章。我们还设置了 orderby 和 order 参数,以按日期降序排列文章。

在自定义循环结束后,我们使用 wp_reset_query() 函数重置查询,以便在后续的循环中使用默认查询参数。

请注意,尽管 query_posts() 函数可以实现自定义查询,但它并不推荐使用,因为它会改变全局查询,可能导致一些不可预见的问题。在大多数情况下,建议使用 pre_get_posts 钩子或 WP_Query 类来实现自定义查询。

另外一种用法:

<?php global $query_string; // 必需
$posts = query_posts($query_string.'&posts_per_page=3&cat=-6,-9&order=ASC'); ?>
<?php // 循环内容?>
<?php wp_reset_query(); // 重置 query ?>

3,为显示数量

-6,-9为排除分类,如果是指定分类比如,指定分类ID为8的分类,就写成cat=8即可。