显示从属于子术语的帖子

时间:2017-03-21 作者:tmgale12

我想列出与分类法归档相关的子术语,然后在术语名称下面列出属于子术语的帖子。

我目前有以下代码,成功列出了子术语。

$this_term = get_queried_object();

$args = array(
\'parent\' => $this_term->term_id,
\'orderby\' => \'slug\',
\'hide_empty\' => false
 );

$child_terms = get_terms( $this_term->taxonomy, $args );
echo \'<ul>\';

foreach ($child_terms as $term) {

//List the child topics 
echo \'<li><h3><a href="\' . get_term_link( $term->name, $this_term->taxonomy ) . \'">\' . $term->name . \'</h3></a></li>\'; 

// Try to list the contained posts (DOES NOT WORK)
?> <div><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a><div><?php

 }//end foreach
  echo \'</ul>\';
但是,我需要它显示属于该子术语的文章的永久链接。我当前使用“the\\u permalink”的方法只是在每个主题中返回相同的帖子。

有人能给我指出正确的方向吗?

2 个回复
最合适的回答,由SO网友:tmgale12 整理而成

我能够通过以下代码实现这一点。我使用了关系运算符,并引用了包含get\\u queryed\\u object()的var($this\\u term);在tax\\u查询中设置分类法,并调整tax\\u查询中的术语字段。

 $this_term = get_queried_object();
 $args = array(
\'parent\' => $this_term->term_id,
\'orderby\' => \'slug\',
\'hide_empty\' => false
 );
 $child_terms = get_terms( $this_term->taxonomy, $args );
 echo \'<ul>\';
 foreach ($child_terms as $term) {

 // List the child topic
 echo \'<li><h3><a href="\' . get_term_link( $term->name, $this_term->taxonomy ) . \'">\' . $term->name . \'</a></h3>\'; 

 // Get posts from that child topic  
$query = new WP_Query( array(
  \'post_type\' => \'kb\',
  \'tax_query\' => array(
    \'relation\' => \'AND\',
    array(
      \'taxonomy\' => $this_term->taxonomy,
      \'field\'    => \'slug\',
      \'terms\'    => array( $term->slug )
    )
  )
) );

 // List the posts
 if($query->have_posts()) {
      while($query->have_posts()) : $query->the_post(); ?>
           <li><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li><?php
      endwhile;
 } else  { echo "no posts";}


 // close our <li>
 echo \'</li>\';
 } //end foreach

SO网友:WebElaine

您需要另一个查询来查找与每个子术语关联的帖子,该帖子包含<div> 需要更改为<li> 因为它仍然在<ul>. 您可能希望缩进子术语链接下面的帖子。这将为您指明大致方向:

foreach ($child_terms as $term) {

     // List the child topic
     echo \'<li><h3><a href="\' . get_term_link( $term->name, $this_term->taxonomy ) . \'">\' . $term->name . \'</a></h3>\'; 

     // Get posts from that child topic
     $args = array(
          \'post_type\' => \'yourposttype\',
          \'tax_query\' => array(
                   \'taxonomy\' => $term->term_id,
                   \'field\' => \'term_id\',
                   \'terms\' => \'terms\'
          )
     );
     $query = new WP_Query( $args ); 
     // List the posts
     if($query->have_posts()):
          while($query->have_posts()) : $query->the_post(); ?>
               <li><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></li><?php
          ehdwhile;
     endif;

     // close our <li>
     echo \'</li>\';
 } //end foreach
我不太熟悉分类查询,所以tax_query 部分可能需要调整,我欢迎编辑。关键是你需要一个查询来获取你需要的帖子,一旦你有了一个循环,你就可以使用the_permalink 根据需要等。

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请