自定义分类法归档模板

时间:2015-04-13 13:51:52

标签: php wordpress templates archive custom-taxonomy

我真的很喜欢Taxonoy模板和CPT的一些帮助,我一直试图解决这个问题一周,我只是变得更加困惑,我尝试的任何东西似乎都按照我希望的方式工作? / p>

任何人都可以解释或告诉我如何实现这一点,我考虑付钱给别人这样做,因为我不是编码员,我可以很愉快地编辑工作代码,但不能写它。我虽然这比这更容易。

细节:

我有自定义帖子类型命名 - '计算机'

我有一个分类附加到名为 - '计算机类型'

在这下面是3种机器类型 - '电气' - '机械' - '太阳能'

我希望“计算机”的存档显示“计算机类型”下的术语列表,其中包含指向该术语存档的链接。我不想显示帖子,只是作为列表的条款。

我相信第一个文件是archive-machines.php

机器(archive-machines.php)?

  -electrical
  -mechanical
  -solar

当我按照其中一个术语链接时,我希望它显示该术语下的帖子列表,只显示链接到single.php的“帖子后标题” (非常标准)

我无法解决的问题是,如何使用“机器类型”下的所有条款来使用相同的模板。我见过的大多数代码都要求你更改一个术语的名称,我需要它是动态的。

我最终的目标是使用一些自定义字段,但目前我只想让模板工作并从那里开始。

我觉得我的嘴里写着检查我的大脑无法兑现!任何帮助将不胜感激 ! :)

2 个答案:

答案 0 :(得分:0)

Wordpress没有用于归档分类术语的标准模板,因此archive-machines.php模板对您没有任何帮助。您最好创建一个自定义页面和模板,并在该模板中使用get_terms()函数来获取机器类型分类中的所有术语并输出您的列表。

https://codex.wordpress.org/Function_Reference/get_terms

此函数将返回一个term对象数组。从这里你可以获得ID,slug,名称等。为了获得该术语的链接,你将使用get_term_link()函数。

https://codex.wordpress.org/Function_Reference/get_term_link

点击其中一个术语后,它将访问taxonomy-machine-types.php模板。这些分类模板设置为根据所选的分类术语显示帖子列表。

答案 1 :(得分:0)

我最后使用了这两个模板,machine-archive.php使用了一些自定义字段。

<?php

/*
 * Custom WordPress Template: archive-machine
 */

// Remove stuff

remove_action( 'genesis_loop', 'genesis_do_loop' );

// Add our custom loop

add_action( 'genesis_loop', 'machine_archive_loop' );

function machine_archive_loop() {

        $libargs=array(  
            'hide_empty'    => 1,  
            'parent'        => 0,  
            'taxonomy'      => 'machine-type');  

            $libcats=get_categories($libargs);  

            foreach($libcats as $lc){ 
                $termlink = get_term_link( $lc->slug, 'machine-type' ); 

        ?>

         <div class="row tax-list">
            <div class="small-12 medium-4 large-3 columns tax-img">
               <a href="<?php echo $termlink; ?>"><img src="<?php the_field('tax_image' , 'machine-type_'.$lc->term_id); ?>" alt="view range"/></a>
            </div>

            <div class="small-12 medium-8 large-9 columns tax-description">
               <h2><a  href="<?php echo $termlink; ?>"><?php echo $lc->name; ?> Range</a></h2>
               <?php the_field('tax_description', 'machine-type_'.$lc->term_id); ?><a  href="<?php echo $termlink; ?>"> ....View the range</a>
            </div>

        </div>

        <?php } 


  // use reset postdata to restore orginal query
  wp_reset_postdata();

} 



genesis();

这是针对taxonomy-machine-type.php

<?php
// Remove stuff
remove_action( 'genesis_loop', 'genesis_do_loop' );

// Add our custom loop
add_action( 'genesis_loop', 'tax_archive_loop' );
 function tax_archive_loop() {

  $taxonomy = 'machine-type';
  $queried_term = get_query_var($taxonomy);
  $terms = get_terms($taxonomy, 'slug='.$queried_term);


    // Define the query
   $args = array(
    'post_type' => 'machines',
    'machine-type' => $queried_term ,
    'posts_per_page' => -1,
 );

// run the query 
    $query = new WP_Query( $args );
    if( $query->have_posts() ) { 

      // Start the Loop
        while ( $query->have_posts() ) : $query->the_post();  ?>

       <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
       <p><?php echo get_the_date(); ?></p>
         <div class="entry-content">   
           <?php echo the_content(); ?>
          <a href="<?php echo get_permalink(); ?>"> ... Find Out More</a>
        </div>

  <?php endwhile;?>

<hr/>

<?php 

}        
    // use reset postdata to restore orginal query
    wp_reset_postdata();
} 
genesis();