WordPress分页不适用于自定义帖子类型和分类术语

时间:2016-05-14 04:56:46

标签: wordpress pagination

尝试按类别按自定义分类条款和默认帖子对自定义帖子类型进行分页,但它不起作用。我是WordPress的新手,我做了很多谷歌搜索,没有找到解决我问题的详细解决方案。

如果有人知道请分享您的答案,我们非常感激。

注意:我创建了一个自定义主题。

这是我的 taxonomy-product_category.php 页面代码:

<?php get_header();?>

<div class="container-fluid pages">
 <div class="container" style="margin-top: 10%;">
  <div class="row">
    <div class="col-sm-8">
        <div class="panel panel-default">
            <?php $term = get_queried_object();
            $taxonomy = get_taxonomy($term->taxonomy);

            ?>
            <div class="panel-heading"><h4><?php echo 'محصولات : '.$term-  >name;?></h4></div>
            <div class="panel-body">
                <?php

                $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
                    $args = array('post_type'=>'my_product',
                        'taxonomy'=>$taxonomy->name,
                        'posts_per_page'=> 1,
                        'term'=>$term->slug,
                        'paged'=>$paged);

                    $query = new WP_Query($args);
                if ($query->have_posts()) {
                    while ($query->have_posts()): $query->the_post(); ?>
                        <div class="thumbnail">
                            <?php if (has_post_thumbnail()) {
                                the_post_thumbnail('featured');
                            } ?>
                            <div class="caption caption-content">
                                <h3 class="product-name"><?php the_title();  ?></h3>
                                <p class="text-muted">
                                    <!-- <strong>نویسنده:</strong> <?php     //the_author();?>  -->
                                    &nbsp;&nbsp; تاریخ: <?php the_date(); ?> </p>
                                <p> <?php the_excerpt(); ?> </p>
                                <div>
                                    <p class="price-box">
                                        <i class="fa fa-  circle">&nbsp;&nbsp;&nbsp;</i>قیمت:
                                        <?php if (the_field('price') == '')     {
                                            // echo "00.00";
                                        } else {
                                            the_field('price');
                                        } ?>
                                    </p>

                                </div>
                            </div>
                            <hr>
                        </div>
                    <?php endwhile;
                }
                else {
                    echo '<h3>هیچ موردی درین بخش یافت نشد.</h3>';
                }
                ?>

                <!-- pagination here -->
                <p>

                        <nav>
                            <?php if ( function_exists( 'custom_pagination'   ) ) {
                                custom_pagination($custom_query-  >max_num_pages,"", $paged);
                            } ?>
                        </nav>

                <?php wp_reset_postdata(); ?>
                </p>

            </div>

        </div>
    </div>
        <?php get_sidebar();  ?>

 </div>
</div>
</div>
<?php get_footer();?>

当我点击下一页时,它会将我重定向到索引页面,其中网址仍然是:    的 http://localhost/goldsotre/product_category/ring/page/2/ Custom_pagination功能:

function custom_pagination($numpages = '', $pagerange = '', $paged='') {

if (empty($pagerange)) {
    $pagerange = 2;
}
global $paged;
if (empty($paged)) {
    $paged = 1;
}
if ($numpages == '') {
    global $wp_query;
    $numpages = $wp_query->max_num_pages;
    if(!$numpages) {
        $numpages = 1;
    }
}
$pagination_args = array(
    'base'            => get_pagenum_link(1) . '%_%',
    'format'          => 'page/%#%',
    'total'           => $numpages,
    'current'         => $paged,
    'show_all'        => False,
    'end_size'        => 1,
    'mid_size'        => $pagerange,
    'prev_next'       => True,
    'prev_text'       => __('&laquo;'),
    'next_text'       => __('&raquo;'),
    'type'            => 'plain',
    'add_args'        => false,
    'add_fragment'    => ''
);

$paginate_links = paginate_links($pagination_args);

if ($paginate_links) {
    echo "<nav class='custom-pagination'>";
    echo "<span class='page-numbers page-num'>Page " . $paged . " of " . $numpages . "</span> ";
    echo $paginate_links;
    echo "</nav>";
}

2 个答案:

答案 0 :(得分:2)

博客页面最多显示值会覆盖机会posts_per_page

我假设您正在使用paginate_link()功能,请在functions.php中尝试此操作:

add_action('pre_get_posts', function($query)
{
    if ($query->is_tax('product_category')) {
        $query->set('posts_per_page', 1);
    }
});

确保product_category是存档页面的分类。 This article对您有帮助。

答案 1 :(得分:1)

如果我使用以下功能而不是我可以看到分页链接但不能正常工作,点击下一个链接时,我会得到404页。

$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' => $query->max_num_pages ) );