get_posts() 是 WordPress 中用于获取文章数据的函数。它允许你根据自定义参数筛选文章,而不是使用默认的所有文章查询。以下是一个使用 get_posts() 的示例,该示例在自定义循环中显示最近的 5 篇文章:

<?php
// 使用 get_posts() 自定义查询参数
$custom_posts = get_posts(array(
    'posts_per_page' => 5, // 显示 5 篇文章
    'orderby' => 'date',    // 按日期排序
    'order' => 'DESC'       // 降序排列,最近的文章在前
));
// 开始循环
if (!empty($custom_posts)) : foreach ($custom_posts as $post) : setup_postdata($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 endforeach; else: ?>
    <p>Sorry, no posts to display.</p>
<?php endif; ?>
// 重置查询数据
wp_reset_postdata();
?>

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

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

与 query_posts() 和 WP_Query 不同,get_posts() 不会改变全局查询。它只是返回一个包含文章数据的数组,因此它是执行自定义查询的另一种推荐方法。如果你需要按分类筛选文章,可以在 get_posts() 参数中添加 cat 参数,就像在 query_posts() 示例中一样。

使用get_posts() 可以在你的主题中很方便的创建多样化的循环,使用这种方法也是比较安全可靠的,你可以在任何地方快速的遍历出文章,你可以尝试使用 get_posts 。假如你想遍历出最新发布的十篇文章,或者随机发表的文章。使用get_posts将变得非常容易,下面是一些简单的例子:

<?php global $post; // 必需
$args = array('category' => -9); // 排除 category 9
$custom_posts = get_posts($args);
foreach($custom_posts as $post) : setup_postdata($post);
...
endforeach;
?>

值得注意的是,无论什么情况下, get_posts是需要一个数组接收参数的,以下是使用数组的组合方式。

$args = array('numberposts'=>3, 'category'=>-6,-9, 'order'=>'ASC');