【问题标题】:WordPress pagination with custom theme doesn't work带有自定义主题的 WordPress 分页不起作用
【发布时间】:2019-07-16 11:18:49
【问题描述】:

我的 WordPress 博客使用自定义主题时出现分页问题。

这是我实际用来显示主页中所有帖子的循环(如您所见,我只需要显示插入到主页类别中的帖子):

<!-- Articles -->
<div role="main">
    <h2 class="page-title">MOST RECENT</h2>
    <hr class="black">
    <?php $args = array(
                'post_type' => 'post',
                'post_status' => 'publish',
                'category_name' => 'home',
                'order' => 'DESC',
                'posts_per_page' => 100,
                'paged' => get_query_var( 'paged' ),
                'offset' => 1,
            );
            ?>
    <?php $arr_posts = new WP_Query( $args ); ?>
    <?php if ( $arr_posts->have_posts() ) : ?>
    <div id="full-post-list" class="row between-xs">
        <?php while ( $arr_posts->have_posts() ) : $arr_posts->the_post(); ?>
        <div class="col-xs-12 col-md-5 mansory-card">
            <div class="box">
                <div class="row middle-xs">
                    <div class="col-xs-12 col-md-12">
                        <div class="box">
                            <a href="<?php the_permalink() ?>">
                                <?php the_post_thumbnail('large', array('class' => 'home-thumb-img')); ?>
                            </a>
                        </div>
                    </div>
                </div>
                <div class="row middle-xs thumb-home">
                    <div class="col-xs-12 col-md-12">
                        <div class="box mansory-text-box">
                            <span class="mansory-title"><a href="<?php the_permalink() ?>">
                                    <?php echo wp_trim_words( get_the_title(), 5, null ); ?></a></span>
                            <!-- Funzione PHP per generare numero random di views (mt_rand(1000,2000)) più visite effettive. Da disattivare dopo un mese dal deployment-->
                            <p class="mansory-details">
                                <!-- POSTED BY <a class="author-name" href="<?php /* echo get_author_posts_url( get_the_author_meta( 'ID' ), get_the_author_meta( 'user_nicename' ) ); ?>"><?php the_author(); */?></a> | --><span class="mansory-category">
                                    <?php the_category(', '); ?></span> |
                                <?php echo get_the_date('F j, Y'); ?>
                                <!-- | <?php /* echo (mt_rand(1000,2000)) + wpp_get_views(get_the_ID()); */ ?> <i class="far fa-eye"></i> -->
                            </p>
                            <p class="mansory-excerpt"><span class="preview-excerpt">
                                    <?php echo get_the_excerpt() ?></span><span class="read-more"><a href="<?php the_permalink() ?>"> Read more</a></span></p>
                            <hr class="gray">
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <?php endwhile; ?>
    </div>
    <?php endif; ?>
</div><!-- #Articles -->

循环显示第一页上的前 100 个帖子,但如果我在浏览器中键入 mysite.com/page/2,我会在第一页上看到相同的帖子。

我在网上阅读了几篇关于分页问题的文章,但我找不到解决方案。

有什么想法吗?

谢谢!

【问题讨论】:

  • 尝试移除'offset' => 1
  • 是的,删除 'offset' => 1 使分页再次工作。谢谢@Kalti!现在的问题是,Wordpress 只显示我条目的前 4 页...我将发布一个新问题
  • 我添加了另一个解决方案,你可以试试。

标签: php wordpress wordpress-theming


【解决方案1】:

如果删除偏移不起作用试试这个:

希望这能解决您的问题。

$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$posts_per_page = 100;
$offset = ( $paged - 1 ) * $posts_per_page; 

$args = array(
  'post_type'   => 'post',
  'post_status' => 'publish',
  'category_name' => 'home',
  'order' => 'DESC',
  'posts_per_page' => $posts_per_page,
  'paged' => $paged,
  'offset' => $offset);

【讨论】:

  • 谢谢@Kalti!您的第一个解决方案似乎工作正常!唯一的问题是现在我不能使用偏移量。明天我会尝试您的第二个解决方案,并会给您反馈!
  • 通过一些小的自定义(现在要显示的帖子数量是 29,而不是 100),您的解决方案就像一个魅力!谢谢@Kalti!
  • @Davide 不客气!很高兴我能提供帮助。
【解决方案2】:

您可以添加自定义分页

第 1 步- 将函数添加到 functions.php 文件中

if (!function_exists('wpex_pagination' )) {

    function wpex_pagination() {

        $prev_arrow = is_rtl() ? '→' : '←';
        $next_arrow = is_rtl() ? '←' : '→';

        global $wp_query;
        $total = $wp_query->max_num_pages;
        $big = 999999999; // need an unlikely integer
        if( $total > 1 )  {
             if( !$current_page = get_query_var('paged') )
                 $current_page = 1;
             if( get_option('permalink_structure') ) {
                 $format = 'page/%#%/';
             } else {
                 $format = '&paged=%#%';
             }
            echo paginate_links(array(
                'base'          => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
                'format'        => $format,
                'current'       => max( 1, get_query_var('paged') ),
                'total'         => $total,
                'mid_size'      => 3,
                'type'          => 'list',
                'prev_text'     => $prev_arrow,
                'next_text'     => $next_arrow,
             ) );
        }
    }
    }


//Step-2 Add CSS




ul.page-numbers {
    list-style: none;
    margin: 0;
}

.page-numbers:after {
    content: ".";
    display: block;
    clear: both;
    visibility: hidden;
    line-height: 0;
    height: 0;
}

ul.page-numbers li {
    display: block;
    float: left;
    margin: 0 4px 4px 0;
    text-align: center;
}

.page-numbers a,
.page-numbers span {
    line-height: 1.6em;
    display: block;
    padding: 0 6px;
    height: 18px;
    line-height: 18px;
    font-size: 12px;
    text-decoration: none;
    font-weight: 400;
    cursor: pointer;
    border: 1px solid #ddd;
    color: #888;
}

.page-numbers a span { padding: 0 }

.page-numbers a:hover,
.page-numbers.current,
.page-numbers.current:hover {
    color: #000;
    background: #f7f7f7;
    text-decoration: none;
}

.page-numbers:hover { text-decoration: none }

//Step-3 在模板文件中添加分页

<?php wpex_pagination(); ?>

【讨论】:

    【解决方案3】:

    offset 参数存在一些已知问题。根据official documentation

    offset (int) – 要替换或跳过的帖子数。警告:设置偏移参数会覆盖/忽略分页参数并中断分页。当使用 'posts_per_page'=>-1(显示所有帖子)时,会忽略 'offset' 参数。

    以下是 Wordpress 提出的解决方法。 https://codex.wordpress.org/Making_Custom_Queries_using_Offset_and_Pagination

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-25
      • 2017-03-19
      • 2011-08-13
      • 2018-09-23
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      • 2015-03-20
      相关资源
      最近更新 更多