wordpress中自定义帖子类型的分页

Posted

技术标签:

【中文标题】wordpress中自定义帖子类型的分页【英文标题】:Pagination in custom post type in wordpress 【发布时间】:2016-08-08 17:44:01 【问题描述】:

我正在尝试在 wordpress 中的自定义帖子中添加分页。我的自定义帖子类型名称是视频。它出现了分页,但是当我点击分页页面时,它会转到 404 页面。

<?php 
$videos= new WP_Query(array(
    'post_type'=>'videos',
    'posts_per_page' => 9,

));?>


<?php if($videos->have_posts()) : ?>
    <?php while($videos->have_posts())  : $videos->the_post(); ?>
        <div class="col-xs-12 col-sm-6 col-md-4 col-lg-4">
            <div class="video">
                <?php the_post_thumbnail(); ?>
                <div class="watch">
                    <a href="<?php the_permalink(); ?>"><i class="fa fa-play"></i></a>
                </div>
            </div>
            <div class="video-exerpt">
                <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
            </div>
        </div>

    <?php endwhile; ?>
    <div class="col-xs-12 text-center">
        <?php
            $GLOBALS['wp_query'] = $videos; 

            the_posts_pagination(
                array(
                    'mid_size' => '2',
                    'prev_text' => '<i class="fa fa-hand-o-left"></i> Previous',
                    'next_text' => 'Next <i class="fa fa-hand-o-right"></i>',
                    'screen_reader_text' => ' '
                    )
            );
        ?>
    </div>
<?php else :?>
    <h3><?php _e('404 Error&#58; Not Found', 'Bangladesh Parjatan'); ?></h3>
<?php endif; ?>
<?php wp_reset_postdata();?>

它显示分页 bt 链接不起作用。请帮帮我。

【问题讨论】:

你能在这里也显示分页链接的渲染 html 吗? 您已经为按钮生成了文本,但您没有生成链接。看看css-tricks.com/snippets/wordpress/paginate-custom-post-types 【参考方案1】:

像这样传递你的 wp_query 参数。您应该使用 paged 参数进行分页。

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
  $videos= new WP_Query(array(
                        'post_type'=>'videos',
                        'posts_per_page' => 9,
                        'paged' => $paged,
                    ));

希望你的分页可以正常工作。

【讨论】:

当我点击第二页时,它会在按钮 bt 中显示链接,它会转到 404.php 页面......请看截图dropbox.com/s/nzu8zxz6x9yymhz/Captsldnure.JPG?dl=0 您的帖子类型名称和您的页面 slug 是否相同? 如果相同,则从您的帖子类型名称更改您的页面 slug。 @saift0014 你有解决办法吗? @saift0014 好的,如果回答有帮助请采纳。【参考方案2】:

你能替换下面的代码吗?

<?php 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$videos= new WP_Query(array(
    'post_type'=>'videos',
    'posts_per_page' => 9,
    'paged' => $paged,
)); ?>

<?php if($videos->have_posts()) : ?>
<?php while($videos->have_posts())  : $videos->the_post(); ?>
<div class="col-xs-12 col-sm-6 col-md-4 col-lg-4">
    <div class="video">
        <?php the_post_thumbnail(); ?>
        <div class="watch">
            <a href="<?php the_permalink(); ?>"><i class="fa fa-play"></i></a>
        </div>
    </div>
    <div class="video-exerpt">
        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
    </div>
</div>

<?php endwhile; ?>            
    <?php 
    $total_pages = $videos->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', 'Bangladesh Parjatan'); ?></h3>
<?php endif; ?>
<?php wp_reset_postdata();?>

【讨论】:

【参考方案3】:

试试下面的代码:

   

<?php 

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$videos= new WP_Query(array(
    'post_type'=>'videos',
    'posts_per_page' => 9,
    'paged' => $paged,
)); ?>

<?php if($videos->have_posts()) : ?>

<?php while($videos->have_posts())  : $videos->the_post(); ?>

<div class="col-xs-12 col-sm-6 col-md-4 col-lg-4">

    <div class="video">
    
        <?php the_post_thumbnail(); ?>
        
        <div class="watch">
        
            <a href="<?php the_permalink(); ?>"><i class="fa fa-play"></i></a>
            
        </div>
        
    </div>
    
    <div class="video-exerpt">
    
        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
        
    </div>


<?php endwhile; ?>            
    
<?php else :?>

<h3><?php _e('404 Error&#58; Not Found', 'Bangladesh Parjatan'); ?></h3>

<?php endif; ?>

</div>

<nav>
								<ul class="pagination">
                
									<?php
                  
$big = 999999999; // need an unlikely integer
echo paginate_links( array(
    'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ),
    'format' => '?paged=%#%',
    'current' => max( 1, get_query_var('paged') ),
    'total' => $the_query->max_num_pages
) );
                                    ?>
								</ul>
							</nav>

<?php wp_reset_postdata();?>

【讨论】:

你可能有一个正确的答案,但请在回答问题时解释你的代码

以上是关于wordpress中自定义帖子类型的分页的主要内容,如果未能解决你的问题,请参考以下文章

PHP wordpress分页自定义查询

从 Wordpress 中自定义帖子类型的类别中获取 ACF 文本字段值

PHP 查询帖子 - 自定义帖子类型的分页结果

如何:在wordpress中自定义帖子类型的自定义类别存档页面

wordpress 3.8.1 类别第 2 页错误 404 未找到 / 自定义帖子类型

php 着陆页自定义帖子类型