php - Wordpress 从循环中排除重复的 $sticky 帖子

标签 php wordpress loops

自 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/

相关文章:

c# - 如何在 C# 中使用自定义名称在循环中创建类

javascript - 我如何在 JQuery 中执行循环?

PHP - ldap_search() 过滤器。如何搜索用户

php - Symfony2 Controller 、 View 和 JavaScript

php - 将 html 保存在数据库中而不进行清理然后像 stackoverflow 一样在代码标记中显示它是否安全?

php - 用php json_encode传输html问题

javascript - 仅在第二页加载时动画定位

wordpress - 合并 2 个 .htaccess 文件

mysql - wordpress 上的负载平衡 - 2 LAP Web 服务器 1 Mysql DB - 如何?

java - 如何重写输入循环以不包含代码重复?