【问题标题】:Wordpress pagination doesn't display correctlyWordpress 分页无法正确显示
【发布时间】:2021-09-19 05:15:29
【问题描述】:

我在我的博客模板中添加了分页。我的博客每页显示三篇文章。我的分页有问题。

因此,分页仅在 url 为 /?s= 时显示。

例如:http://localhost/sitename/?s=

谁能帮我解决这个问题?

<?php
/*
*Template Name: Szablon wyszukiwarki
*Template Post Type: page, post
*/
?>
 
<?php 
get_header(); 
get_template_part('navigation');
?>
 
<div class="post-banner">
    <div class="post-title">
       <h1><?php echo the_title(); ?></h1> 
    </div>
</div>
   
 
    <?php $paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;
    global $post;
 
    $args = array(
    'posts_per_page'=>get_option('posts_per_page'),
    'paged' => ( get_query_var('paged') ? get_query_var('paged') : 1 )
    );
     
    $myposts = get_posts( $args );
    foreach ( $myposts as $post ) : setup_postdata( $post ); ?>
    <div class="col-md">
        <a href="<?php the_permalink(); ?>">
            <img class="post-thumbnail" src="<?php the_post_thumbnail_url('medium_large'); ?>"/>
        </a>
        <div class="post-details">
            <h6><?php echo get_the_date('j F Y'); ?></h6>
            <h6>Nazwa kategorii: <?php echo the_category(' '); ?> </h6>
            <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
            <p>
            <?php the_excerpt(); ?>
            </p>
        </div>
    </div>
    <?php endforeach; 
 
    posts_nav_link();
    wp_reset_postdata();?>
 
    
<?php get_footer(); ?>

编辑:
它有效,但为什么我必须在这段代码中设置“1”:

'paged' => get_query_var('paged', 1)

这段代码在没有这个参数的情况下运行,那为什么?

    <?php
/*
*Template Name: Szablon wyszukiwarki
*Template Post Type: page, post
*/
?>
 
<?php 
get_header(); 
get_template_part('navigation');
?>
 
<div class="post-banner">
    <div class="post-title">
       <h1><?php echo the_title(); ?></h1> 
    </div>
</div>
   
<?php 

$query= new WP_Query(array(
    'post_type'=>'post', // your post type name
    'posts_per_page' => get_option('post_per_page'), // post per page
    'paged' => get_query_var('paged', 1)
));

if($query->have_posts()) :
    while($query->have_posts())  : $query->the_post(); ?>
        <div class="col-md">
            <a href="<?php the_permalink(); ?>">
                <img class="post-thumbnail" src="<?php the_post_thumbnail_url('medium_large'); ?>"/>
            </a>
        <div class="post-details">
            <h6><?php echo get_the_date('j F Y'); ?></h6>
            <h6>Nazwa kategorii: <?php echo the_category(' '); ?> </h6>
            <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
            <p>
            <?php the_excerpt(); ?>
            </p>
        </div>
    </div><?php
    endwhile;

    $total_pages = $query->max_num_pages;

    if ($total_pages > 1){

        $current_page = max(1, get_query_var('paged'));

        echo paginate_links(array(
            'base' => get_pagenum_link(1) . '%_%',
            'format' => '/page/%#%',
            'current' => $current_page,
            'total' => $total_pages,
            'prev_text'    => __('« prev'),
            'next_text'    => __('next »'),
        ));
        
    }
    ?>    
<?php else :?>
<h3><?php _e('404 Error&#58; Not Found', ''); ?></h3>
<?php endif; ?>
<?php wp_reset_postdata();?>


<?php get_footer(); ?>

【问题讨论】:

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


    【解决方案1】:

    在您的 $arg 数组中,我会执行以下操作:

    $args = array(
      'posts_per_page' => get_option('posts_per_page'),
      'paged' => get_query_var('paged', 1) //This would do the same thing as your ternary operator!
    );
    

    然后,我不使用posts_nav_link,而是将max_num_pages 值传递给paginate_links 函数,如下所示:

    echo paginate_links(
      array(
        "total" => $myposts->max_num_pages
      )
    );
    

    【讨论】:

    • 谢谢,您的回答指出了我的正确方法,但我有一个问题,我在帖子中的“编辑”部分写了这个问题。
    • 没有必要使用那个语法。这只意味着,如果 url 中没有分页值,则获取查询的第一页。同样,您不必使用我的语法。
    猜你喜欢
    • 2021-04-06
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多