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
。
由于 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
。