按分类对帖子列表进行分组并允许分页

时间:2014-03-06 作者:Chris

multiple ways of showing 按分类法列出的(自定义)帖子列表,但似乎不允许分页。

因此,我可以很容易地列出所有帖子,如:

Page 1

  • 1
  • 2
  • 3
  • 4
  • 5

Page 2

<只需稍加努力,我就可以列出按分类法分组的帖子

Page 1

  • A
  • 1
  • 2
    • B
    • 3
    • 4
    • 5
    • 6
      • C
      • 7
      • 8
        • D
          • 9需要帮助的是混合分页,例如。

            Page 1

            • A
            • 1
            • 2
              • B
              • 3
              • 4
              • 5

                Page 2

                <有什么想法吗?

                示例代码如下:

                <?php
                // Get current Category
                $get_current_cat = get_term_by(\'name\', single_cat_title(\'\',false), \'category\');
                $current_cat = $get_current_cat->term_id;
                
                
                // List posts by the terms for a custom taxonomy of any post type
                $post_type = \'myposttype\';
                $tax = \'mytaxonomy\';
                $tax_terms = get_terms( $tax, \'orderby=name&order=ASC\');
                if ($tax_terms) {
                    foreach ($tax_terms  as $tax_term) {
                        $args = array(
                            \'post_type\'         => $post_type,
                            "$tax"              => $tax_term->slug,
                            \'post_status\'       => \'publish\',
                            \'posts_per_page\'    => -1,
                            \'category__in\'      => $current_cat // Only posts in current category (category.php)
                        );
                
                        $my_query = null;
                        $my_query = new WP_Query($args);
                
                        if( $my_query->have_posts() ) : ?>
                
                            <h2><?php echo $tax_term->name; // Group name (taxonomy) ?></h2>
                
                            <?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
                                <?php $term_list = wp_get_post_terms($post->ID, \'category\', array("fields" => "ids")); // Get post categories IDs?>
                
                                <?php if (in_array($current_cat, $term_list) ): // Display only posts that have current category ID ?>
                                    <h3><?php the_title(); ?></h3>
                                <?php endif; // if in_array ?>
                
                            <?php endwhile; // end of loop ?>
                
                        <?php endif; // if have_posts()
                        wp_reset_query();
                
                    } // end foreach #tax_terms
                } // end if tax_terms
                
                ?>

1 个回复
最合适的回答,由SO网友:Chris 整理而成

我想出来了!

第一步是sort the posts by taxonomy (以便将它们组合在一起)。

这将给出一个可以分页的帖子列表(就像常规列表一样)。

现在的诀窍是在相关帖子上方添加一个(分类)标题。

因此,对于循环的每一步,我都会查看帖子所属的分类法。当这种情况发生变化时,我知道“分类法组”已经发生了变化,因此我需要显示一个标题。

E、 g.使用我的原始示例

对于第一篇文章,我们没有当前的分类法,因此显示标题

当我们从第2篇转到第3篇时,当前的分类会发生变化,所以让我们再次显示标题

这是我正在使用的代码

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

  <ol>

  <?php $current_taxonomy = \'\'; while ( $the_query->have_posts() ) : $the_query->the_post(); ?>

  <?php
  $terms = get_the_terms( $post->ID, \'taxonomy_goes_here\' );

  if ( $terms && ! is_wp_error( $terms ) ) : 

    $tax_terms = array();

    foreach ( $terms as $term ) {
      $tax_terms[] = $term->name;
    }

    $current_tax_terms = join( ", ", $tax_terms );
  ?>

  <?php endif; ?>

  <?php

    if($current_taxonomy != $current_tax_terms) {
      echo \'<li><h2>\'.$current_tax_terms.\'</h2></li>\';
      $current_taxonomy = $current_tax_terms;
    }

  ?>

  <li><?php the_title();?></li>

  <?php endwhile; ?>

  </ol>

<?php endif;?>

结束

相关推荐

foreach pagination

我正在寻求有关如何对foreach输出分页的帮助。我查看了其他问题和答案,但找不到适合我的解决方案,也找不到可以自己解决的解决方案。现在,下面的代码将所有内容输出到表行中。当然,我的问题是,它将所有数据转储到一个页面上——因此我需要分页。我想为页面上的每11项分页。这一页是一份杂志档案,每年有11期——因此每一页相当于我们杂志的1年。第一页应该是第1-11期,第二页应该是第12-22期,等等。我们有10年的杂志期。任何帮助都将不胜感激。非常感谢。<table> <tr>&#