分类术语的存档模板

时间:2012-12-07 作者:user1833715

我已经注册了一个自定义帖子类型[设备],并且在分类法I have parent和child类别中有一个分类法[equipment\\u type]。例如:

设备(定制柱型)

设备类型(分类)

摄影机(父项)

相机A(儿童期)

摄像机B

我想创建的实际上是一个分类术语的归档页面。因此,当选择“Cameras”或“Camera A”时,它会显示12篇文章,包括标题和特色图片(链接到单个文章)以及一些分页。

我尝试了一个标准的WP查询和循环,结果总是以所有术语显示所有分类法帖子。

我目前有taxonomy-equipment_types.php 为处理查询而设置的模板。

3 个回复
SO网友:Franz Noel

我想记录下来,因为我最近才找到答案。

拥有分类法的问题是,大多数开发人员都有mindset of expectingpost_type url地址:

http://hostname/post_type/taxonomy_term
相反,您将在以下位置找到url:

http://hostname/taxonomy_slug/taxonomy_term
这意味着we often may be creating the template correctly

taxonomy-taxonomy_slug-taxonomy_term.php
但正确的使用方法是在url中使用它

http://hostname/taxonomy_slug/taxonomy_term
view the correct url 对于分类法,我们可以使用

get_the_term_list($post->ID,\'taxonomy_slug\')
并测试链接指向的任何位置。

SO网友:Chip Bennett

WordPress模板层次结构提供了您所需的确切模板文件:taxonomy-{taxonomy}-{term}.php.

因此,要为cameras 合同期限equipment_types 在分类法中,您将创建一个名为taxonomy-equipment_types-cameras.php.

(注意,您还可以为分类法本身创建模板文件;只需省略{term} 段塞:taxonomy-{taxonomy}.php, 或taxonomy-equipment_types.php 在您的情况下。)

您可以通过查询术语parent,通过返回的对象属性,根据层次结构有条件地输出内容get_term(), 或“儿童”一词,通过get_term_children().

SO网友:SolaceBeforeDawn

我也有类似的问题。上述答案的问题是,它们都要求您指定CPT、分类法或术语。

如您所示,如果您希望根据用户所在的CPT页面动态检索此内容,可以尝试以下操作(对我来说很有用),其中显示当前自定义帖子类型的所有分类法。

(originally from this post with the help of GhostToast)

 <?php get_header(); ?>
  <div id="content">
<div id="main">

  <ul>

<? // Start taxonomy term archives query
$post_type = get_post_type(); // find out CPT name
$taxonomies = get_object_taxonomies($post_type); // Find taxonomies
if($taxonomies){
foreach($taxonomies as $taxonomy){
// only want hierarchial -- no tags please
if(is_taxonomy_hierarchical($taxonomy)){

    $terms = get_terms($taxonomy, array(
\'orderby\'       => \'name\', 
\'order\'         => \'Asc\',
\'hide_empty\'    => true )); 

 foreach ( $terms as $term ) {  


// example output below ?>

<li>

 <h1><a href="<?php echo get_term_link($term->slug, $taxonomy); ?> "><? echo $term->name; ?></a></h1>

   <div class="imgBox">

     <a href="<?php echo get_term_link($term->slug, $taxonomy); ?> " title="<? echo $term->name; ?>" >
     <img src="<?php echo get_template_directory_uri(); ?>/timthumb.php?src=/library/images/dingy-placeholder.png&amp;h=196&amp;w=285&amp;zc=1" alt="<?php the_title(); ?>" /></a>
   </div>

           <div class="the-excerpt">
            <a href="<?php echo get_term_link($term->slug, $taxonomy); ?> "><? echo $term->description; //you can add this in admin ?> - click to view more</a>
            </div>
 </li>
        <?  

   }
 }
}
}?>

     </ul>


<?php wp_reset_query(); ?>

     </div> <!-- end #main -->
   </div> <!-- end #content -->

 <?php get_footer(); ?>
将上述内容保存在一个名为archive mycpt的文件中。php,然后归档。php在header调用之后添加这个;

<?php get_header(); ?>

<?php  // is this one of our CPT ? If so, direct to custom archive page 
  if ( is_custom_post_type() ){ 
include (TEMPLATEPATH . \'/archive-mycpt.php\'); 

        // if not continue...

    } else {  ?>

               <!-- archive.php content   -->

   <? } ?>

结束

相关推荐

Invalid Taxonomy in template

我已经浏览了这里涉及同样错误的帖子,没有任何运气。我有一个自定义的帖子类型(Staff)和它的自定义分类法。编制员工职位和分配术语很有效,但我想根据分类术语将所有员工分组列出。但是the terms do not come through.模板文件位于此处:http://pastie.org/4372363的(相关部分)功能。php文件位于此处:http://pastie.org/4372367我为什么不能这样做?结果如下所示:<div class=\"content\"> &