首页 文章

Wordpress:从查询中排除前4个帖子

提问于
浏览
-2

我有一个模板与下一个查询:

<?php
                    if ( get_query_var('paged') ) {
                        $paged = get_query_var('paged');
                    } else if ( get_query_var('page') ) {
                        $paged = get_query_var('page');
                    } else {
                        $paged = 1;
                    }
                    query_posts( array( 'post_type' => 'post', 'paged' => $paged  ) );
                ?>

                <?php if (have_posts()) : ?>

                <?php while (have_posts()) : the_post(); ?>

                    <?php get_template_part('/post-types/home-normal'); ?>

                <?php endwhile; ?>

当然,如果我想在这种情况下排除前4个帖子使用 'offset' => 1 购买,如果我转到帖子列表的第2页,这不起作用,实际上,从第1页显示相同的帖子,并且相同在第3页,每次都是相同的帖子

我的PHP知识是有限的,它可以是这个查询的东西?或者可能是模板中的更多内容?谢谢

2 回答

  • 0

    Use it like this

    <?php
    
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    $new_query =new WP_Query( array( 'paged' => $paged, 'offset' => 4 ) );
    
                ?>
    
                <?php if ( $new_query->have_posts()) : ?>
    
                <?php while ( $new_query->have_posts()) :  $new_query->the_post(); ?>
    
                    <?php get_template_part('/post-types/home-normal'); ?>
    
                <?php endwhile; ?>  
    <?php wp_reset_query(); ?>
    
  • 0

    offset 会覆盖分页,因为当您进入查询级别时,它会通过 offset 进行分页 .

    你仍然可以使用 offset ,你只需要做一些数学运算来将你想要的 offset 乘以当前的页码(注意这个计算是有效的,因为每页的帖子和 offset 都是4,你可能必须使用你的 posts_per_page 值计算两者是否不同):

    function my_function_for_excluding_posts( $query ) {
        if ($query->is_home() && $query->is_main_query()) {
            $offset = 4;
            $paged = 0 == $query->get( 'paged' ) ? 1 : $query->get( 'paged' );
            $query->set( 'offset', $paged * $offset );
        }
    }
    add_action( 'pre_get_posts', 'my_function_for_excluding_posts' );
    

    编辑 - 过滤 found_posts 所以页数是正确的 .

    function myprefix_adjust_offset_pagination($found_posts, $query) {
        if ( $query->is_home() && $query->is_main_query() ) {
            return $found_posts - 5;
        }
        return $found_posts;
    }
    add_filter('found_posts', 'myprefix_adjust_offset_pagination', 1, 2 );
    

    欲了解更多信息,请参阅link

相关问题