📜  wordpress 在帖子上循环但排除当前帖子 - PHP (1)

📅  最后修改于: 2023-12-03 14:48:32.535000             🧑  作者: Mango

在 WordPress 中循环文章但排除当前文章

在 WordPress 中,经常需要在前端页面上循环文章列表,但有时候需要排除当前文章。下面我们将介绍如何在 WordPress 中实现这个功能。

1. 使用 WP_Query 循环文章

WP_Query 是 WordPress 中用于查询文章的类。我们可以使用它来查询满足特定条件的文章列表。

$args = array(
    'post_type'      => 'post',
    'post_status'    => 'publish',
    'posts_per_page' => 10,
);

$posts = new WP_Query( $args );

if ( $posts->have_posts() ) {
    while ( $posts->have_posts() ) {
        $posts->the_post();
        // 输出文章标题、内容等
    }
}
wp_reset_postdata(); // 重置文章查询

在上面的例子中,我们使用 WP_Query 查询 10 篇已发布文章。在循环文章时,我们使用 the_post() 函数设置全局 $post 变量,以便我们可以访问当前文章的各种信息。

2. 排除当前文章

现在我们需要在循环文章列表时排除当前文章。为了达到这个目的,我们需要在查询参数中添加一个条件,即 post__not_in 参数。

$post_id = get_the_ID(); // 获取当前文章的 ID

$args = array(
    'post_type'      => 'post',
    'post_status'    => 'publish',
    'posts_per_page' => 10,
    'post__not_in'   => array( $post_id ),
);

$posts = new WP_Query( $args );

if ( $posts->have_posts() ) {
    while ( $posts->have_posts() ) {
        $posts->the_post();
        // 输出文章标题、内容等
    }
}
wp_reset_postdata(); // 重置文章查询

在上面的例子中,我们首先使用 get_the_ID() 函数获取当前文章的 ID。然后将其添加到 post__not_in 参数中,以便在文章循环中排除当前文章。

3. 完整代码

下面是完整的 PHP 代码,用于在 WordPress 中循环文章但排除当前文章。

$post_id = get_the_ID(); // 获取当前文章的 ID

$args = array(
    'post_type'      => 'post',
    'post_status'    => 'publish',
    'posts_per_page' => 10,
    'post__not_in'   => array( $post_id ),
);

$posts = new WP_Query( $args );

if ( $posts->have_posts() ) {
    while ( $posts->have_posts() ) {
        $posts->the_post();
        // 输出文章标题、内容等
    }
}
wp_reset_postdata(); // 重置文章查询
结论

在 WordPress 中,我们可以使用 WP_Query 类查询文章并循环文章列表。使用 post__not_in 参数,我们可以将当前文章排除在循环之外。这样,在前端页面上循环文章列表时,我们就可以避免重复显示当前文章。