【问题标题】:/page/2 (pagination) while listing taxonomy terms (and not on a taxonomy page)/page/2(分页)同时列出分类术语(而不是在分类页面上)
【发布时间】:2014-02-25 16:28:32
【问题描述】:

我已经研究这个问题几个星期了,经常遇到同样的问题。这是一个有点复杂的设置:

我有一个名为“档案”的类别。我还有一个自定义分类“档案”,用于将关于同一新闻事件或故事的帖子分组。 当有人创建帖子时,他们可以将帖子分配给某个文档集,然后将其放入“文档集”类别。这样一来,所有的档案帖子都在同一类别下归档,同时仍然可以将故事彼此分开。

我需要类别“档案”的类别页面来显示分类“档案”中的所有自定义分类术语。这些,反过来,链接到他们自己的特定档案列表。我创建了 category-dossiers.php 文件,它替换了默认的类别页面,所以这不再是问题了。

使用其他论坛帖子,尤其是这个帖子,我已经解决了大部分问题。类别页面显示所有分类术语,带有链接和所有内容,并且可以将它们分成页面。 (这有点 hacky,因为 WordPress 通常不使用术语作为主要内容块,而是使用帖子)。

我现在唯一的问题是让第二个、第三个等页面正常工作。除了第一页,它只显示我的主题的默认 index.php 文件。

这是完整的模板页面。谁能弄清楚它有什么问题?我已经尝试过,但似乎无法找到问题。

<?php get_header(); ?>

<?php get_sidebar (); ?>

    <section class="articles grid main-content category">
        <header class="grid-header">
                <h2><?php single_cat_title();?></h2>
        </header>
            <?php

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

                $per_page    = 20;
                $number_of_terms = count( get_terms( "dossiers") );
                $offset      = $per_page * ( $paged - 1) ;

                // Setup the arguments to pass in
                $args = array(
                    'order'     => 'ASC',
                    'orderby'      => 'menu_order',
                    'offset'    => $offset,
                    'number'    => $per_page
                );

                // Gather the terms
                $terms = get_terms("dossiers", $args);

                $count = count($terms);
                if ( $count > 0 ){
                    echo "<ul>";
                    foreach ( $terms as $term ) {?>
                        <li class="article">
                            <a href="<?php echo get_term_link( $term ); ?>">
                                <?
                                    if ( get_field('banner', $term->taxonomy._.$term->term_id) ) { // check if the post has a Banner Image assigned to it.
                                        $image = get_field('banner', $term->taxonomy._.$term->term_id);
                                        echo '<img class="wp-post-image" src="'.$image[sizes]['thumbnail'].'" />';
                                    }
                                    else {
                                        echo '<img class="wp-post-image" src="' . get_bloginfo( 'stylesheet_directory' ) . '/img/missing-thumbnail.png" />';
                                    }
                                ?>
                                <div class="meta-info" />
                                    <div class="caption" data-category="<?php $category = get_the_category(); echo $category[0]->slug; ?>"><?php echo $term->name; ?> </div>
                                </div>
                            </a>
                        </li>
                     <?}
                     echo "</ul>";
                 }
            ?>
    </section>

    <nav class="pagination">

        <?php 

                if($terms) {

                        $big = 999999999; // need an unlikely integer
                        echo paginate_links( array(
                            'base'    => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
                            'format'  => '/page/%#%',
                            'current' => $paged,
                            'total'   => ceil( $number_of_terms / $per_page ), // 3 items per page
                            'type' => 'list',
                            'mid_size' => 5
                        ) );

                }
?>
        </nav>

<?php get_footer(); ?>

【问题讨论】:

    标签: php wordpress pagination taxonomy


    【解决方案1】:

    更改查询数组

    $args = 数组( '订单' => 'ASC', 'orderby' => 'menu_order', '偏移量' => $偏移量, '分页' => $per_page );

    而不是使用分页的号码。

    【讨论】:

    • 好吧,这有什么作用......它使我的分页显示正确的“数量”页面。就我而言,我有 12 个帖子的块,需要分成每页 9 个块。更改后我得到的是一页上有 12 个帖子的块,下面有正确的分页。转到“第 2 页”仍然显示“未找到页面”页面。
    • 您是否复制了上面 $args 值的分页查询。所以这里你的代码看起来像 $per_page = (get_query_var('paged')) ? get_query_var('paged') : 1; $args = array('order' => 'ASC', 'orderby' => 'menu_order', 'offset' => $offset, 'paged' => $per_page);试试这个,应该可以的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 2013-11-17
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多