wordpress子分类获取父分类
方法一
area data-settings="dblclick" readonly >$p_id = get_the_ID(); $cat_srt = get_category_parents(get_the_category($p_id)[0] ,false, '|'); $catParentName = explode('|',$cat_srt)[0]; area>123$p_id = get_the_ID();$cat_srt = get_category_parents(get_the_category($p_id)[0] ,false, '|');$catParentName = explode('|',$cat_srt)[0];
方法二
wordpress获取分类的顶级父类
第一个函数(get_term_top_most_parent)接受一个分类ID和分类 ,并返回分类的顶级父类(或本身);
第二功能(hey_top_parents)工作在循环中,以及,给定的分类法,返回后的分类顶层祖先。
area data-settings="dblclick" readonly >// determine the topmost parent of a term function get_term_top_most_parent($term_id, $taxonomy){ // start from the current term $parent = get_term_by( 'id', $term_id, $taxonomy); // climb up the hierarchy until we reach a term with parent = '0' while ($parent->parent != '0'){ $term_id = $parent->parent;$parent = get_term_by( 'id', $term_id, $taxonomy); } return $parent; }// so once you have this function you can just loop over the results returned by wp_get_object_termsfunction hey_top_parents($taxonomy, $results = 1) { // get terms for current post $terms = wp_get_object_terms( get_the_ID(), $taxonomy ); // set vars $top_parent_terms = array(); foreach ( $terms as $term ) { //get top level parent $top_parent = get_term_top_most_parent( $term->term_id, $taxonomy ); //check if you have it in your array to only add it once if ( !in_array( $top_parent, $top_parent_terms ) ) { $top_parent_terms[] = $top_parent; } } // build output (the HTML is up to you) foreach ( $top_parent_terms as $term ) { $r = '<ul>';$r .= '<li><a href="'. get_term_link( $term->slug, $taxonomy ) . '">' . $term->name . '</a></li>'; }$r .= '</ul>';// return the results return $r;} area>161718192021222324252627282930313233343536373839404142// determine the topmost parent of a termfunction get_term_top_most_parent($term_id, $taxonomy){// start from the current term$parent= get_term_by( 'id', $term_id, $taxonomy);// climb up the hierarchy until we reach a term with parent = '0'while ($parent->parent != '0'){$term_id = $parent->parent;$parent= get_term_by( 'id', $term_id, $taxonomy);}return $parent;}// so o
nce you have this function you can just loop over the results returned by wp_get_object_termsfunction hey_top_parents($taxonomy, $results = 1) {// get terms for current post$terms = wp_get_object_terms( get_the_ID(), $taxo
nomy );// set vars$top_parent_terms = array();foreach ( $terms as $term ) {//get top level parent$top_parent = get_term_top_most_parent( $term->term_id, $taxo
nomy );//check if you have it in your array to o
nly add it o
nceif ( !in_array( $top_parent, $top_parent_terms ) ) {$top_parent_terms[] = $top_parent;}}// build output (the HTML is up to you)foreach ( $top_parent_terms as $term ) {$r = '<ul>';$r .= '<li><a href="'. get_term_l
ink( $term->slug, $taxo
nomy ) . '">' . $term->name . '</a></li>';}$r .= '</ul>';// return the resultsreturn $r;}