【问题标题】:Wordpress pagination not working in custom queryWordpress 分页在自定义查询中不起作用
【发布时间】:2020-12-10 17:29:35
【问题描述】:

我已经使用 front-page.php 设置了我的首页,并在第一部分显示了我最新的 bbpress 主题。我只想显示 5 个帖子和分页。但是分页不起作用。我检查了检查元素,课程即将到来,但没有链接。以下是我的代码

<ul>
                                <?php 
                                    $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
                                    $args = array( 'post_type' => 'topic', 'posts_per_page' => 2 , 'paged' => $paged);
                                    $loop = new WP_Query( $args );
                                   if($loop->have_posts()):
                                    while($loop->have_posts()):
                                        $loop->the_post();
                                    $topic = get_the_ID();
                                    ?>
                                    <li>
                                        <div class="bbp_topic_data">
                                            <div class="bbp_topic_post">
                                                <a href="<?php bbp_topic_permalink() ?>">
                                                    <h4><?= the_title(); ?></h4>
                                                    <?=the_excerpt();?>
                                                </a>
                                            </div>
                                            <div class="bbp_topic_stat">
                                                <!-- <span><?php //do_action( 'bbp_theme_after_topic_started_by' ); ?></span> -->
                                                <span class="topic_details_text"><?php echo $view_count=  pvc_post_views();; if($view_count <  0) {echo $view_count;}?></span>
                                                <?php $reply_count=  bbp_get_topic_reply_count(  $topic_id = $topic ); ?>
                                                <span class="topic_details_text"><?php if($reply_count > 0)  {echo "Replies:". $reply_count;} ?> </span>
                                            </div>
                                            
                                        </div><!--bbp_topic_data-->
                                        <div>
                                            <span class="author_image"><?php echo bbp_get_topic_author_avatar($topic)?></span>
                                            <span class="topic_details_text">Started By: <?php echo bbp_get_topic_author_display_name( $topic ); ?> </span>
                                            
                                        </div>
                                    </li>
                                   <?php endwhile; ?>
                                   <div class="next-prev-wrap">

<span class="next"><?php next_posts_link( 'Older posts', $post->max_num_pages ); ?></span>
<span class="prev"><?php previous_posts_link( 'Newer posts', $post->max_num_pages ); ?></span>

</div>
                                    <?php endif; ?>
                                   <?php next_posts_link(); ?>
                                   <?php //wp_reset_postdata(); ?>
                            </ul>

请帮我解决这个问题

【问题讨论】:

  • 只需确认几件事 - 您是否已在 WP 管理设置中将 front-page.php 设置为您的首页?我认为这就是您要说的,但要绝对清楚:) 看看this answer。另外,我假设您有超过 5 个帖子并且查询正在返回结果?
  • 如果我们使用front-page.php,后端无需设置,wordpress会自动将其作为首页
  • 正如我所说,我假设它设置正确,但是在调试某些东西时,从头开始 - 确保在这种情况下设置正确 - 首先排除明显的问题,然后从那里开始工作.我们看不到您的设置,因此您是我们的眼睛 - 您需要让我们知道这些事情,因为我们无法自行检查 :) 另外,其他问题呢?

标签: php wordpress


【解决方案1】:

问题在于您需要替换为$loop$post 变量,并且您应该检查paged 参数

如果静态首页上的分页中断,您必须添加 以这种方式“分页”参数:

if ( get_query_var( 'paged' ) ) { $paged = get_query_var( 'paged' ); }
elseif ( get_query_var( 'page' ) ) { $paged = get_query_var( 'page' ); }
else { $paged = 1; }

请检查这里 - https://codex.wordpress.org/Pagination

<ul>
    
    <?php
    if ( get_query_var( 'paged' ) ) { $paged = get_query_var( 'paged' ); }
    elseif ( get_query_var( 'page' ) ) { $paged = get_query_var( 'page' ); }
    else { $paged = 1; }
    $args = array( 'post_type' => 'topic', 'posts_per_page' => 2 , 'paged' => $paged);
    $loop = new WP_Query( $args );
    if( $loop->have_posts()):
        while($loop->have_posts()):
            $loop->the_post();
            $topic = get_the_ID();
            ?>
            <li>
                <div class="bbp_topic_data">
                    <div class="bbp_topic_post">
                        <a href="<?php the_permalink() ?>">
                            <h4><?= the_title(); ?></h4>
                            <?php the_excerpt();?>
                        </a>
                    </div>
                    <div class="bbp_topic_stat">
                         <span><?php do_action( 'bbp_theme_after_topic_started_by' ); ?></span>
                        <span class="topic_details_text"><?php echo $view_count=  pvc_post_views();; if($view_count <  0) {echo $view_count;}?></span>
                        <?php $reply_count=  bbp_get_topic_reply_count(  $topic_id = $topic ); ?>
                        <span class="topic_details_text"><?php if($reply_count > 0)  {echo "Replies:". $reply_count;} ?> </span>
                    </div>
    
                </div><!--bbp_topic_data-->
                <div>
                    <span class="author_image"><?php echo author_avatar($topic)?></span>
                    <span class="topic_details_text">Started By: <?php echo bbp_get_topic_author_display_name( $topic ); ?> </span>
    
                </div>
            </li>
        <?php endwhile; ?>
        <div class="next-prev-wrap">
    
            <div class="nav-previous alignleft"><?php previous_posts_link( 'Older posts' ); ?></div>
            <div class="nav-next alignright"><?php next_posts_link( 'Newer posts', $loop->max_num_pages ); ?></div>
    
    
        </div>
    <?php endif; ?>
    <?php next_posts_link(); ?>
    <?php wp_reset_postdata(); ?>
        </ul>

【讨论】:

  • 我检查了,但它不起作用,即使我也尝试了 next_posts_link(),它也没有输出任何东西
  • @Thomasrakesd 这就是为什么您需要向我们提供我们要求的信息......否则我们必须猜测问题可能出在哪里并且可能会出错:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-13
  • 2016-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多