获取自定义帖子类型的父类别

时间:2015-02-26 作者:wp richard

我正在尝试显示属于用户所在的自定义帖子类型的所有类别。

例如,此帖子:http://bit.ly/1ANisxN是属于此页面类别的自定义帖子类型:http://bit.ly/1FYscKh

正如您所看到的,页面类别显示了它的子类别,这正是我想要实现的自定义帖子:I.imgur。com/vk4K31T。巴布亚新几内亚

这是我在自定义帖子中尝试过的,以显示没有运气的父类别:

<?php echo get_category_parents() ?>
顺便说一句,这就是类别页面响应其子类别的方式:

<?php  
$terms = get_terms( \'btp_work_category\' ); 
   foreach ( $terms as $term ) {
       ?>
       <li><a href="#" data-filter=".filter-<?php echo $term->term_id; ?>"><?php echo $term->name; ?></a></li>
       <?php  
  }
?>      
你知道怎么做吗?

例如,此类别结构:

电子产品(顶级)

摄像头(子类别)

电视帖子(子类别)

手机贴子(子类别)

如果我在cameras 帖子我想显示它的顶级类别及其子类别(相对于cameras 因为所有都在“电子”之下)

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

如果您位于单个自定义帖子模板中,则可以使用

$terms = get_the_terms( get_the_ID(), \'btp_work_category\' );
然后,您需要确定父项并将其与其子项一起显示。

下面的代码假设帖子属于一个顶级类别(术语),分类树的级别不超过2级。

$terms = get_the_terms( get_the_ID(), \'btp_work_category\' );
if ( ! empty( $terms ) ) :
  echo "<ul>\\n";
  // Parent term detection and display
  $term = array_pop( $terms );
  $parent_term = ( $term->parent ? get_term( $term->parent, \'btp_work_category\' ) : $term );
  echo "<li>\\n";
  echo \'<a href="\' . get_term_link( $parent_term, \'btp_work_category\' ) . \'">\' . $parent_term->name . \'</a>\';
  // Getting children
  $child_terms = get_term_children( $parent_term->term_id, \'btp_work_category\' );
  if ( ! empty( $child_terms ) ) :
    echo "\\n<ul>\\n";
    foreach ( $child_terms as $child_term_id ) :
      $child_term = get_term_by( \'id\', $child_term_id, \'btp_work_category\' );
      echo \'<li><a href="\' . get_term_link( $child_term, \'btp_work_category\' ) . \'">\' . $child_term->name . "</a></li>\\n";
    endforeach;
    echo "</ul>\\n";
  endif; // ( ! empty( $child_terms ) )
  echo "</li>\\n";
  echo "</ul>\\n";
endif; // ( ! empty( $terms ) )

SO网友:Dameer

这里有些东西应该有用。。。尽管CPT没有像普通WP帖子那样的父类别。

function get_cpt_parent_cat_aka_taxonomy() {
    global $post;
    $parent_tax_name = \'Undefined parent taxonomy!\';
    $obj_taxonomies = get_object_taxonomies( $post->post_type, \'objects\' );
    $slugs = array();
    if( !empty( $obj_taxonomies ) ) {
        foreach ( $obj_taxonomies as $key => $tax ) {
            if( $tax->show_ui === true && $tax->public === true && $tax->hierarchical !== false ) {
                array_push( $slugs, $tax->name );
            }
        }
        $terms = wp_get_post_terms( $post->ID, $slugs );
        $term = get_term( $terms[ 0 ]->term_id, $terms[ 0 ]->taxonomy );
        $parent_tax_name = $term->name;
    }
    return $parent_tax_name;
}

结束

相关推荐

通过unctions.php删除页面时间戳,使其不会显示在Google搜索结果描述中

我想通过函数从页面(不是帖子)中删除上次更新/上次修改的日期。php(这可以通过使挂钩为空来实现吗?)目标是删除因日期修改代码而显示的google搜索结果描述日期时间戳。我只希望该函数在页面上运行(因为页面上次更新/创建的时间通常无关紧要)。我意识到这可以通过修改页面模板中的底层代码来实现,但这种方法更容易实现。谢谢