Wordpress 如何在索引页中显示所有帖子并排除置顶帖子

Wordpress how to show all posts in the index page and exclude sticky posts

由于 Wordpress 的粘性 posts 功能允许 post 在 post 发布面板中检查为粘性,将其放置在 posts 的首页顶部.

我想在索引中显示所有 posts 而没有粘性 posts:

if ( have_posts() ) :
?>
    <div class="row my-4">
    <?php
        while ( have_posts() ) :
            the_post();

            /**
             * Include the Post-Format-specific template for the content.
             * If you want to overload this in a child theme then include a file
             * called content-___.php (where ___ is the Post Format name) and that will be used instead.
             */
            get_template_part( 'content', 'index' ); // Post format: content-index.php
        endwhile;
    ?>
    </div>
<?php
endif;

wp_reset_postdata();

您可以使用 pre_get_posts 操作挂钩来操作查询。由于您需要修改 index.php 上的查询,因此您可以使用 is_home 条件检查。

add_action('pre_get_posts', 'your_theme_no_sticky_posts_query');

function your_theme_no_sticky_posts_query($query)
{
  if (is_home() && $query->is_main_query()) {
    $query->set('post__not_in', get_option('sticky_posts'));
  }
}

代码进入您活动主题的 functions.php