所以我对Wordpress来说是个新手,但到目前为止我已经能够自己解决大多数问题。
我有自定义帖子类型 - 我们称之为Machines
。在这些机器中,有一个名为Machine_type
的类别。并说我做了一个名为Scissor Lifts
的机器类型,然后是另一个名为electric scissor lifts
的机器类型,它是scissor lifts
的孩子。
我想在单个帖子页面上显示这些信息 - 所以在electric scissor lifts
页面上,我想显示像机器 - 剪式升降机 - 电动剪叉式升降机等面包屑。但这似乎几乎不可能!我尝试过使用许多不同的教程,但它们似乎总是显示Machines - - - Final machine name
,而不是我想要显示的实际2个类别!
对于类别和儿童类别没有简单的内置调用似乎有点疯狂!我正在使用它:
<?php
$terms = get_the_terms( $post->ID , 'machine_type' );
foreach ( $terms as $term ) {
$term_link = get_term_link( $term, 'machine_type' );
if( is_wp_error( $term_link ) )
continue;
echo '<p>Machine Type: <a href="' . $term_link . '">' . $term->name . '</a></p>';
}
?>
但这显然只是将所有信息转储出去,无法将父类和子类分开。
编辑:
关于这个问题的更新:我终于找到了一些似乎正在处理正确问题的代码:
<?php
// get top level terms
$parents = get_terms( 'machine_type', array( 'parent' => 0 ) );
// get post categories
$categories = get_the_terms( $post->ID, 'machine_type' );
// output top level cats and their children
foreach( $parents as $parent ):
// output parent name and link
echo '<a href="' . get_term_link( $parent ) . '">' . $parent->name . '</a>: ';
// initialize array to hold child links
$links = array();
foreach( $categories as $category ):
if( $parent->term_id == $category->parent ):
// put link in array
$links[] = '<a href="' . get_term_link( $category ) . '">' . $category->name . '</a>';
endif;
endforeach;
// join and output links with separator
echo join( ', ', $links );
endforeach;
?>
然而,它输出的内容并不完全正确。例如,在一个被归类为动臂升降机和铰接式电动臂升降机的机器上,它现在显示:“动臂升力:铰接式动臂(电动)剪式升降机:高空作业:”
所以它增加了2个不适用于这台机器的其他类别。有什么想法吗?
答案 0 :(得分:3)
$wcatTerms = get_terms('product_cat', array('hide_empty' => 0, 'orderby' => 'ASC', 'parent' =>0));
foreach($wcatTerms as $wcatTerm) :
echo $wcatTerm->name;
$wsubargs = array('hierarchical'=>1,'show_option_none'=>'','hide_empty'=>0,'parent'=>$wcatTerm->term_id,'taxonomy'=>'product_cat');
$wsubcats = get_categories($wsubargs);
foreach ($wsubcats as $wsc):
echo $wsc->name;
endforeach;
endforeach;
使用此选项可显示两个级别的类别名称和产品名称。
答案 1 :(得分:0)
这可能会有所帮助
<?php
/********************** List out the parent and child inside parent ***/
$taxonomyName = "your_taxonomy";
$term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );
if ($term->parent == 1) {
wp_list_categories('taxonomy=your_taxonomy&depth=1&show_count=0
&title_li=&child_of=' . $term->term_id);
} else {
wp_list_categories('taxonomy=your_taxonomy&show_count=0
&title_li=&child_of=' . $term->parent);
}
?>