Wordpress 自定义 Post 类型存档显示
Wordpress Custom Post type archive display
我有一个名为 STORIES 的自定义 post 类型。
在那个 post 类型中,我有类别,所以每个故事也被分配了一个这样的类别...
故事 1(指定类别红色)
故事 2(指定类别 BLUE)
故事 3(指定类别绿色)等
我需要显示一个列出类别的页面,单击后会列出该类别的 post。
因此该页面将是一个列表...
红色
蓝色的
绿色
什么模板可以控制此列表?
然后我单击 RED,它会将我带到一个仅显示 RED 故事的模板。
什么模板可以控制此列表?
我猜我需要三个特定的模板?
一个叫 template-stories.php,一个叫 archive-stores.php,最后一个叫 single-stories.php?
你猜对了,首先你需要一个页面模板,你要在其中调用你的术语,但你需要按他的分类法调用,对吧?,要做到这一点,你需要用到函数get_terms( $taxonomies, $args );
,用函数get_term_link($term)
,你将得到当前词条的url:
$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 .= ' · ';
}
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{
//...
}
我有一个名为 STORIES 的自定义 post 类型。 在那个 post 类型中,我有类别,所以每个故事也被分配了一个这样的类别...
故事 1(指定类别红色) 故事 2(指定类别 BLUE) 故事 3(指定类别绿色)等
我需要显示一个列出类别的页面,单击后会列出该类别的 post。
因此该页面将是一个列表...
红色 蓝色的 绿色
什么模板可以控制此列表?
然后我单击 RED,它会将我带到一个仅显示 RED 故事的模板。
什么模板可以控制此列表?
我猜我需要三个特定的模板? 一个叫 template-stories.php,一个叫 archive-stores.php,最后一个叫 single-stories.php?
你猜对了,首先你需要一个页面模板,你要在其中调用你的术语,但你需要按他的分类法调用,对吧?,要做到这一点,你需要用到函数get_terms( $taxonomies, $args );
,用函数get_term_link($term)
,你将得到当前词条的url:
$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 .= ' · ';
}
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{
//...
}