从get_category_parents(wordpress)中排除类别

时间:2011-04-27 17:03:45

标签: wordpress categories

我正在寻找一种从我的痕迹主题的get_category_parents中排除ID为3和4的类别的方法。这是代码,有问题的行是11:

function the_breadcrumb() {
global $post;
if (!is_home()) {
    echo '<a href="'.get_option('home').'">'.home.'</a>';
    if (is_category()) {
        echo " / ";
        echo single_cat_title();
    } elseif(is_single() && !is_attachment()) {
        $cat = get_the_category(); $cat = $cat[0];
        echo " / ";
        echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
        echo " / ";
        echo thman_get_limited_string($post->post_title,30);
    }       
    elseif (is_search()) {
        echo " / " . cerca;
    }       
    elseif (is_page() && $post->post_parent) {
        echo ' / <a href="'.get_permalink($post->post_parent).'">';
        echo get_the_title($post->post_parent);
        echo "</a> / ";
        echo thman_get_limited_string($post->post_title,30);        
    }
    elseif (is_page() OR is_attachment()) {
        echo " / "; 
        echo thman_get_limited_string($post->post_title,30);
    }
    elseif (is_author()) {
        echo wp_title(' / Profilo');
        echo "";
    }
    elseif (is_404()) {
        echo " / "; 
        echo errore_404;
    }       
    elseif (is_archive()) {
        echo wp_title(' / ');       
    }
}
    }

3 个答案:

答案 0 :(得分:2)

$cat = get_the_category();
$cat = $cat[0]->term_id;
// next will return an array of all category ancestors, with toplevel cat being [0]
$ancestors = array_reverse(get_ancestors($cat, 'category'));
if($ancestors) {
  // set up output
  $output = '';
  foreach($ancestors as $cat) {
    // skips cats 3 and 4
    if($cat == '3' || $cat == '4') continue;
    $catlink = get_category_link($cat);
    $catname = get_cat_name($cat);
    $output .= '<a href="' . $catlink . '">' . $catname . '</a>' . "\n";
  }
}

echo $output;

这是我的头脑,但我相信这是正确的。

答案 1 :(得分:0)

谢谢你的回答,但我不是php的专家,所以我的完整代码应该是这样的吗?

function the_breadcrumb() {
global $post;
if (!is_home()) {
    echo '<a href="'.get_option('home').'">'.home.'</a>';
    if (is_category()) {
        echo " / ";
        echo single_cat_title();
    } elseif(is_single() && !is_attachment()) {
      $cat = get_the_category(); $cat = $cat[0]->term_id;
  // next will return an array of all category ancestors, with toplevel cat being [0]
  $ancestors = array_reverse(get_ancestors($cat, 'category');
  if($ancestors) {
  // set up output
  $output = '';
  foreach($ancestor as $cat) {
  // skips cats 3 and 4
  if($cat == '3' || $cat == '4') continue;
  $catlink = get_category_link($cat);
  $catname = get_cat_name($cat);
  $output .= '<a href="' . $catlink . '">' . $catname . '</a>' . "\n";
   }
  }
  echo $output;
        echo " / ";
        echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
        echo " / ";
        echo the_title_shorten(45,'...');
    }       
    elseif (is_search()) {
        echo " / " . cerca;
    }       
    elseif (is_page() && $post->post_parent) {
        echo ' / <a href="'.get_permalink($post->post_parent).'">';
        echo get_the_title($post->post_parent);
        echo "</a> / ";
        echo the_title_shorten(45,'...');       
    }
    elseif (is_page() OR is_attachment()) {
        echo " / "; 
        echo the_title_shorten(45,'...');
    }
    elseif (is_author()) {
        echo wp_title(' / Profilo');
        echo "";
    }
    elseif (is_404()) {
        echo " / "; 
        echo errore_404;
    }       
    elseif (is_archive()) {
        echo wp_title(' / ');       
    }
}
    }

答案 2 :(得分:0)

谢谢你们所有人, 我终于让代码工作了:

$ancestors = array_reverse(get_ancestors(get_cat_ID(single_cat_title("", false)), 'category'));
$cat_parent_and_cat = '';
if($ancestors) {
    foreach($ancestors as $cat) {               
         //if($cat == '3' || $cat == '4') continue; // skips cats 3 and 4
         $catlink = get_category_link($cat);
         $catname = get_cat_name($cat);
         $cat_parent_and_cat .= '<a href="' . $catlink . '">' . $catname . '</a>' . ' &rsaquo; ' ;
    }
}
echo $cat_parent_and_cat;

希望它会帮助某人