【问题标题】:Wordpress custom pagination shows same posts on every pageWordpress 自定义分页在每个页面上显示相同的帖子
【发布时间】:2021-01-09 20:42:37
【问题描述】:

我一直在尝试将自定义数字分页添加到我的自定义 Wordpress 主题中。到目前为止一切似乎都很好,但问题是每个页面都显示相同的 3 个帖子。在构建自己的 Wordpress 博客主题时,我应该考虑做些什么。现在我有我的 page-archive.php 和 single.php 文件,我需要别的东西才能工作吗?使用类别过滤也不起作用,它不断将我发送回 index.php

我的 index.php 文件中的代码

<div class="blogitem a">
<?php
            
        //PRINT ONLY Tutvustus
        $lastBlog = new WP_Query('type=post&posts_per_page=3');
            
        if( $lastBlog->have_posts() ):
            
            while( $lastBlog->have_posts() ): $lastBlog->the_post(); ?>
                
                <?php get_template_part('page-archive',get_post_format()); ?>
            
            
            
            
            <?php endwhile;
            
        endif;
        
        wp_reset_postdata();
                
        ?>
        
        <div class="pagination">
<?php
if ( get_query_var('paged') ) { $paged = get_query_var('paged'); }
elseif ( get_query_var('page') ) { $paged = get_query_var('page'); }
else { $paged = 1; }

query_posts(array(
    'post_type'      => 'post',
    'paged'          => $paged,
    'posts_per_page' => 2
));

if ( have_posts() ) : ?>

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

    <?php?>

<?php endwhile; ?>

    <?php my_pagination(); ?>

<?php else : ?>

    <?php ?>

<?php endif; ?>
</div>
        
</div>

functions.php 文件中的代码

if ( ! function_exists( 'my_pagination' ) ) :
    function my_pagination() {
        global $wp_query;
        $big = 999999999; 

        echo paginate_links( array(
            'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
            'format' => '?paged=%#%',
            'current' => max( 1, get_query_var('paged') ),
            'total' => $wp_query->max_num_pages
        ) );
    }
endif;

我将 page-archives.php 文件修改为这段代码。

<?php
/*
Template Name: Archives
*/
get_header(); ?>

  
<div id="container">
    <div id="content" role="main">

        <?php the_post(); ?>
        <h1 class="entry-title"><?php the_title(); ?></h1>
        
        
         
  
    

    </div><!-- #content -->
</div><!-- #container -->


<?php get_footer(); ?>

现在我的类别过滤工作正常,但如果我从分页中选择第二页,它不会显示任何帖子。

【问题讨论】:

    标签: php wordpress pagination wordpress-theming custom-theme


    【解决方案1】:

    我认为你需要wp_reset_query...一些有用的链接:

    在此处查看示例:

    <div class="blogitem a">
    <?php
                
            //PRINT ONLY Tutvustus
            $lastBlog = new WP_Query('type=post&posts_per_page=3');
                
            if( $lastBlog->have_posts() ):
                
                while( $lastBlog->have_posts() ): $lastBlog->the_post(); ?>
                    
                    <?php get_template_part('catalog',get_post_format()); ?>
                
                
                
                
                <?php endwhile;
                
            endif;
            
            wp_reset_postdata();
                    
            ?>
            
            <div class="pagination">
    <?php
    if ( get_query_var('paged') ) { $paged = get_query_var('paged'); }
    elseif ( get_query_var('page') ) { $paged = get_query_var('page'); }
    else { $paged = 1; }
    
    query_posts(array(
        'post_type'      => 'post',
        'paged'          => $paged,
        'posts_per_page' => 2
    ));
    
    if ( have_posts() ) : ?>
    
    <?php while ( have_posts() ) : the_post(); ?>
    
        <?php?>
    
    <?php endwhile; ?>
    
        <?php my_pagination(); ?>
    
    <?php else : ?>
    
        <?php ?>
    
    <?php endif; ?>
    
    <?php wp_reset_query(); // add this ?>
    
    </div>
            
    </div>
    

    【讨论】:

    • 谢谢,但这并没有真正起作用。我不确定为什么它在每个页面都显示相同的帖子,当我尝试使用类别过滤帖子时发生同样的事情。
    • 我在帖子中添加了一个编辑。我使用类别过滤来更改我的 page-archive.php 文件代码。
    • 我回答了这个问题,但你确实帮助了我。谢谢!
    【解决方案2】:

    原来我很傻,反正我不需要前半部分代码。

    <div class="pagination">
    <?php
    if ( get_query_var('paged') ) { $paged = get_query_var('paged'); }
    elseif ( get_query_var('page') ) { $paged = get_query_var('page'); }
    else { $paged = 1; }
    
    query_posts(array(
        'post_type'      => 'post', // You can add a custom post type if you like
        'paged'          => $paged,
        'posts_per_page' => 2
    ));
    
    if ( have_posts() ) : ?>
    
    <?php while ( have_posts() ) : the_post(); ?>
    
        <?php get_template_part('catalog',get_post_format()); ?> // added template part here and voila it works
    
    <?php endwhile; ?>
    
        <?php my_pagination(); ?>
    
    <?php else : ?>
    
        <?php  ?>
    <?php wp_reset_query(); // add this ?>
    <?php endif; ?>
    
    
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多