Исключить категорию из get_category_parents (wordpress) - PullRequest
1 голос
/ 27 апреля 2011

Я ищу способ исключить категории с идентификаторами 3 и 4 из get_category_parents моей темы «хлебные крошки».Это код, рассматриваемая строка - 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 ]

2 голосов
/ 27 апреля 2011
$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;

Это не в моей голове, но я верю, что это правильно.

0 голосов
/ 17 сентября 2013

Спасибо всем вам, Я наконец-то получил работающий код:

$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;

Надеюсь, это кому-нибудь поможет

0 голосов
/ 28 апреля 2011

спасибо Шелли за ответ, но я не специалист по 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(' / ');       
    }
}
    }
...