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

Php 如何在自定义帖子类型中显示类别和帖子,php,jquery,wordpress,Php,Jquery,Wordpress,我需要一些帮助,因为我已经用尽了所有我能找到信息的地方。这就是我想做的: 我在我的管理员中创建了一个名为Classes的自定义帖子类型 这工作很好,数据工作很好,它的管理输入。 我想制作一个自定义模板来显示此自定义帖子类型。但是,我尝试的所有内容都没有正确显示。我尝试了许多代码变体。 我知道有些人已经这样做了,并有代码块来显示这一点。这就是我所需要的代码: 列出我的自定义帖子类型“类”中的所有类别 列出所有帖子显示所有内容,而不是每个类别内的链接或摘录。 显示它,就像我使用Jquery Acco

我需要一些帮助,因为我已经用尽了所有我能找到信息的地方。这就是我想做的:

我在我的管理员中创建了一个名为Classes的自定义帖子类型 这工作很好,数据工作很好,它的管理输入。 我想制作一个自定义模板来显示此自定义帖子类型。但是,我尝试的所有内容都没有正确显示。我尝试了许多代码变体。 我知道有些人已经这样做了,并有代码块来显示这一点。这就是我所需要的代码:

列出我的自定义帖子类型“类”中的所有类别 列出所有帖子显示所有内容,而不是每个类别内的链接或摘录。 显示它,就像我使用Jquery Accordion一样

(四)类别 书名 内容 ========================================================

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

<?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;
    ?>

社区,我需要你。请给出您的反馈

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

然后,对于每一个类别,你都会做上面提到的事情

    $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_术语的所有参数:

对于该查询,您很可能还必须在页面上对其使用简单的分类查询搜索。

通过将此参数添加到上述查询:

'tax_query' => 
    array(
        'taxonomy' => 'category',
        'field' => 'slug',
        'terms' => array( $term_name )
    )
这就是你要找的吗

也许有更好的方法可以做到这一点,但我最近不得不这么做,并且做了我刚才概述的很多事情

我应该更清楚地说,将posts查询放在terms查询的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;
  }
?>