Sort Posts By Category?

时间:2014-06-24 作者:FlannelBeard

谷歌搜索了几个小时,找不到解决方案。

在我的theme 你有一个Browse 从我正在处理的自定义帖子类型中提取所有视频的页面。如果用户制作了30个类别,那么我希望用户能够使用顶部列出的类别按钮对视频进行排序。如果他们点击Horror 我想循环显示所有Horror 视频。

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

BROWSE PAGE

我的类别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年了。。。

这个网站对我的第一个主题很好,但我不知道如何让这个循环按你选择的类别排序。有什么建议吗?

谢谢

3 个回复
SO网友:jdm2112

你有orderby 参数,但缺少伴奏order. 这为排序提供了升序/降序规则。

WordPressCodex 参考

SO网友:Joey Yax

我很难理解这个问题,但我假设您发布的代码片段包含query_posts 在类别、存档或索引模板中,当您跟踪由生成的链接时会调用该模板get_category_link (). 如果是,则query_posts 函数重写默认循环,但您不包括要筛选的类别,因此它将获取该帖子类型中的所有帖子。

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

// build query
$args = array(
  \'posts_per_page\' => $numPosts,
  \'paged\'          => $page,
  \'post_type\'      => \'theme_video\'
);

// get category ID
$cat_id = get_query_var( \'cat\' );

// add category to query if an id is found
if ( $cat_id != \'\' ) {
  $cat = get_category ( $cat_id );
  $args[\'category\'] = $cat->slug;
}

// go!
query_posts( $args );
另一方面,我建议使用pre_get_posts 挂钩与query_posts 作用

SO网友:FlannelBeard

EDIT: 已找到答案,我将其张贴给任何有此问题的其他人。如果你有更好的方法来做到这一点,那么请在下面发表文章,以造福他人。

将此代码放入category.php. 它将自动从URL中获取类别并将其传递给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();
?>

结束

相关推荐

使用Apply_Filters帮助输出POST类

我不熟悉脚本,这是一个插件,我想修改它来输出post类。当我尝试使用时:apply_filters( \'post_class\', $page->post_class ) it仅输出array=\" \". 我是否需要一个附加函数来连接到post类?在我的研究中,我无法判断我的语法是否错误,或者我在类中缺少了一个要“拉”的函数apply_filters 抓住。非常感谢你的帮助。 var $db_fields = array (\'parent\' => \'post_parent\',