按类别排序帖子?

时间:2014-06-24 20:54:36

标签: php sorting loops categories

用Google搜索了几个小时,无法找到解决方案。

在我的theme上,您有一个Browse页面,可以从我正在使用的自定义帖子类型中提取所有视频。如果用户制作30个类别,那么id就像用户能够使用顶部列出的类别按钮对视频进行排序。如果他们点击Horror ID就像要循环显示所有Horror视频。

如何在此循环中使用类别对视频进行排序?

浏览页面

我的类别ul li a

<ul class="sort-by-category">
    <?
      $args = array(
            'orderby' => 'name',
            'parent' => 0
      );
      $categories = get_categories( $args );
      foreach ( $categories as $category ) {
        echo '<li><a class="browse-categories" href="' . get_category_link( $category->term_id ) . '">' . $category->name . '</a></li>';
      }
    ?>
  </ul>
<? 
    // Our variables
    $numPosts = (isset($_GET['numPosts'])) ? $_GET['numPosts'] : 0;
    $page = (isset($_GET['pageNumber'])) ? $_GET['pageNumber'] : 0;

    query_posts(array(
          'posts_per_page' => $numPosts,
          'paged'          => $page,
          'post_type'      => 'theme_video'
    ));

    // our loop
    if (have_posts()) {
          while (have_posts()){
                the_post();
                get_template_part( 'partials/content', 'browse' );
          }
    }
    wp_reset_query();
  ?>

我对如何继续有点迷茫。我没有尝试任何东西似乎对循环进行排序,并且我使用的方法已经过时了1 - 2年......

网站适合我的第一个主题,但我不知道如何让这个循环按您选择的类别排序。任何提示或指示?

谢谢!

1 个答案:

答案 0 :(得分:1)

编辑:已找到答案,我正在为有此问题的其他人发帖。如果您有更好的方法来实现这一点,请在下面发布,以便他人受益。

将此代码放入 category.php。它会自动从网址中获取类别并将其传递给cat => $category_id并相应地更新循环。

<ul class="sort-by-category">
<?
  $args = array(
        'orderby' => 'name',
        'parent' => 0
  );
  $categories = get_categories( $args );
  foreach ( $categories as $category ) {
    echo '<li><a class="browse-categories" href="' . get_category_link( $category->term_id ) . '">' . $category->name . '</a></li>';
  }
?>
</ul>

<?
    // Our variables
    $page = (isset($_GET['pageNumber'])) ? $_GET['pageNumber'] : 0;

    // grab slug from url
    $category_id = get_query_var('cat');

    // define args
            $args = array( 
                        'posts_per_page' => '36',
          'paged'          =>  $page,
          'post_type'      => 'theme_video',
          'cat'            =>  $category_id
     );

            // place args in query
            $category_posts = new WP_Query($args);

            // our loop
            if($category_posts->have_posts()) { 
            while($category_posts->have_posts()) { 
                    $category_posts->the_post();
                    get_template_part( 'partials/content', 'browse' );
            }
    } 
    wp_reset_query();
?>