Wordpress自定义帖子类型存档显示

时间:2015-06-16 00:39:12

标签: wordpress templates custom-post-type advanced-custom-fields

我有一个名为STORIES的自定义帖子类型。 在该帖子类型中,我有类别,因此每个STORY也被分配了这样的类别......

故事1(指定类别RED) 故事2(指定类别蓝色) 故事3(指定类别GREEN)等。

我需要显示一个列出类别的页面,点击后,然后列出该类别的帖子。

因此该页面将是一个包含...

的列表

RED 蓝色 GREEN

什么模板可以控制这个列表?

然后我点击RED,它会转到一个只显示RED Stories的模板。

什么模板可以控制这个列表?

我猜我需要三个特定的模板? 一个名为template-stories.php,一个名为archive-stores.php,最后一个名为single-stories.php?

1 个答案:

答案 0 :(得分:3)

你猜对了,首先你需要一个页面模板,你要打电话给你的条款,但是你需要通过他的分类来打电话,对吧?为此,你需要使用函数get_terms( $taxonomies, $args );和函数get_term_link($term),您将获得当前术语的网址:

$args = array( 'hide_empty=0' );

$terms = get_terms( 'my_term', $args );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
   $count = count( $terms );
   $i = 0;
   $term_list = '<p class="my_term-archive">';
   foreach ( $terms as $term ) {
      $i++;
      $term_list .= '<a href="' . get_term_link( $term ) . '" title="' . sprintf( __( 'View all post filed under %s', 'my_localization_domain' ), $term->name ) . '">' . $term->name . '</a>';
    if ( $count != $i ) {
        $term_list .= ' &middot; ';
    }
    else {
        $term_list .= '</p>';
    }
}
echo $term_list;

}

然后,您需要archive.php,其中您将显示与此当前术语相关联的所有帖子。

但首先你需要获得当前的术语,你可以使用get_term_by($field, $value, $taxonomy, $output, $filter)函数来完成它。

$term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );

现在你可以制作一个if语句:

if($term = 'red'){
    the_title();
    //Or get_template_part( 'content', 'stories' ); 
}else{
  //...
}