如何显示自定义帖子类型中的类别和帖子

时间:2014-03-20 19:36:02

标签: php jquery wordpress

我需要一些帮助,因为我已经用尽了每一个我可以尝试寻找信息的地方。这就是我想要做的事情:

  1. 我在我的管理员中创建了一个名为" Classes"
  2. 的自定义帖子类型
  3. 工作正常,数据效果很好,并且在管理员中输入。
  4. 我想制作一个自定义模板来显示此自定义帖子类型。但是,我尝试的一切都没有正确显示。我尝试了很多代码变体。
  5. 我知道某些人已经完成了这个并且有代码块来显示它。这就是我需要代码的地方:

    1. 列出我的自定义帖子类型'
    2. 中的所有类别
    3. 列出每个类别中的所有帖子(显示所有内容,而不是链接或摘录)。
    4. 如此显示(我使用Jquery Accordion)

      • the_category()

      • the_title()
      • the_content()
    5. =============================================== =========

      顺便说一下,这是我目前正在使用的代码块。它确实有效,但它只显示帖子,所有这些。它不会显示其中包含帖子的类别。

      <?php
          $type = 'classes';
          $args = array (
           'post_type' => $type,
           'post_status' => 'publish',
           'paged' => $paged,
           'posts_per_page' => 10,
           'ignore_sticky_posts'=> 1
          );
          $temp = $wp_query; // assign ordinal query to temp variable for later use
          $wp_query = null;
          $wp_query = new WP_Query($args);
          if ( $wp_query->have_posts() ) :
              while ( $wp_query->have_posts() ) : $wp_query->the_post();
                  echo '<h3 class="acc1">';
                  the_title();
                  echo '</h3>';
                  echo '<div class="sc"><div class="vs"><a href="/schedule" class="reg-but">View Schedule</a></div>';
                  the_content();
                  echo '</div>';
              endwhile;
          else :
              echo '<h2>Not Found</h2>';
              get_search_form();
          endif;
          $wp_query = $temp;
          ?>
      

      社区,我需要你。请提供反馈!

1 个答案:

答案 0 :(得分:0)

您要做的实际上是从类别查询开始。您必须确保使用自定义帖子类型查询所有类别:

然后,对于每个类别,您将完成上述任务。

    $taxonomy = 'classes';
    $args = array('hide_empty' => false,);
    $terms = get_terms( $taxonomy, $args );

    foreach($terms as $val) {
        $term_id = $val->term_id;
        $term_name = $val->name; 
// now do post query
}

您很可能还必须将类别名称显示为手风琴的标题。

以下是get_terms的所有参数: http://codex.wordpress.org/Function_Reference/get_terms

对于该查询,您还很可能必须使用简单分类查询(在页面上搜索)。 http://codex.wordpress.org/Class_Reference/WP_Query

将此arg添加到上述查询中:

'tax_query' => 
    array(
        'taxonomy' => 'category',
        'field' => 'slug',
        'terms' => array( $term_name )
    )

那是你在找什么?

可能有更好的方法可以做到这一点,但我最近不得不这样做,并做了我刚刚在这里概述的内容。

我应该更清楚,并说将帖子查询放在术语查询的foreach中。

以下是基于您上次回复的更新答案(我尚未对此进行测试)。

<?php 
    $taxonomy = 'classes';
    $args = array('hide_empty' => false,);
    $terms = get_terms( $taxonomy, $args );


    foreach($terms as $val) {
        $term_id = $val->term_id;
        $term_name = $val->name; 

        $type = 'classes';
        $args = array (
         'post_type' => $type,
         'post_status' => 'publish',
         'paged' => $paged,
         'posts_per_page' => 10,
         'ignore_sticky_posts'=> 1,
         'tax_query' => 
            array(
                'taxonomy' => 'category',
                'field' => 'slug',
                'terms' => array( $term_name )
            )
        );
        $temp = $wp_query; // assign ordinal query to temp variable for later use  
        $wp_query = null;
        $wp_query = new WP_Query($args); 

        if ( $wp_query->have_posts() ) :
            while ( $wp_query->have_posts() ) : $wp_query->the_post();
                echo '<h3 class="acc1">'; 
                the_title();
                echo '</h3>'; 
                echo '<div class="sc"><div class="vs"><a href="/schedule" class="reg-but">View Schedule</a></div>';
                the_content();
                echo '</div>';
            endwhile;
        else :
            echo '<h2>Not Found</h2>';
            get_search_form();
        endif;
        $wp_query = $temp;
  }
?>