自 Wordpress sticky posts功能允许在帖子发布面板中检查为置顶 的帖子放置在帖子首页的顶部。我还打算通过自定义 The Loop 来设置与循环中的普通帖子不同的置顶帖子样式。默认编码如下:
<?php if (have_posts()) : ?>
<?php $post = $posts[0]; $c=0;?>
<?php while (have_posts()) : the_post(); ?>
<?php $c++;
if( is_home() && !$paged && $c == 1 ) :?>
<!--First sticky post content -->
<?php elseif( is_home() && !$paged && $c == 2 ) :?>
<!--Second sticky post content -->
<?php elseif( is_home() && !$paged && $c == 3 ) :?>
<!--Third sticky post content -->
<?php else:?>
<!-- Standard post content -->
<?php endif;?>
<?php endwhile; ?>
<!-- End of the main loop -->
//pagination
<?php else : ?>
<?php _e('Sorry, no posts matched your criteria.'); ?>
<?php endif; ?>
结果是我得到了前三个具有自定义样式的帖子(选中为粘性),同时在我未能摆脱的标准帖子输出中复制。
我试图替换 <?php else : ?>
与 <?php elseif(!is_sticky()) : ?>
但是显示的页面被“分页”或当前页码大于一个根据每页的发布日期减去粘性帖子的帖子数。
非常感谢任何有助于使粘性帖子不重复的帮助。
最佳答案
我建议您阅读 WP_Query 文档:
https://codex.wordpress.org/Class_Reference/WP_Query#Pagination_Parameters
您可以创建新的(或更改现有的)查询和获取没有粘性的帖子。
Don't Show Sticky Posts
Exclude all sticky posts from the query:
$query = new WP_Query( array( 'post__not_in' => get_option( 'sticky_posts' ) ) );
我建议您连续查询 2 次。
第一个获取置顶帖子,第二个获取所有其他帖子(排除置顶帖子,如上所述)。
关于php - Wordpress 从循环中排除重复的 $sticky 帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38936722/