So erhalten Sie die get_category_parents () Breadcrumbs-Trail ohne Link auf das letzte Element

Nur eine Frage: Ich möchte get_category_parents() , um einen Breadcrumb auf einer Kategoriearchivseite anzuzeigen, aber ohne Link auf der aktuell angezeigten Kategorie (SEO-Zwecke, weil sie sagen, dass ein Link zu sich selbst. Ich bin nicht sicher, Suchmaschinen sind das dumm, aber trotzdem).

So was :

link_home »link_cat1» link_subcat1 »nolink_subsubcat1

get_category_parents() ist dafür perfekt, aber es gibt nur zwei Möglichkeiten: mit Links und ohne Links.

Was ich will, ist Links ABER auf den letzten Artikel.

Die function gibt eine Zeichenfolge und kein Objekt oder Array zurück, sodass ich das letzte Element nicht entfernen kann.

Ich könnte mit Regex tun, indem ich mit dem » separator und entferne den letzten Link auf diese Weise, aber ich bin ziemlich schlecht mit Regexes (wenn Sie gute Referenzen dafür wissen, bin ich interessiert!).

Ich weiß, dass die offensichtliche Antwort darin besteht, eine benutzerdefinierte function mit get_ancestors() und einer Schleife zu erstellen und dann einfach nach dem aktuellen Kategorienamen zu addieren.

Aber ich wollte wissen, ob es einen einfacheren Weg gibt, aber get_category_parents() um keinen Link zum letzten Element hinzuzufügen?

Danke für jede Einsicht.

Grüße Simon

Solutions Collecting From Web of "So erhalten Sie die get_category_parents () Breadcrumbs-Trail ohne Link auf das letzte Element"

Ich halte das nicht für besser / schlechter als die Option von Kaiser, aber einfach anders. Warum nicht get_category_parents für die get_category_parents und dann (optional) die aktuelle Kategorie anhängen?

Ich habe das nicht getestet, aber etwas wie das Folgende sollte funktionieren:

 $cat_id=7;//current category's ID (eg 7) $separator='»';//The separator to use $category = get_category($cat_id);//$category is the current category object $parent_id = $category[0]->category_parent //category's parent ID $ancestors = get_category_parents($parent_id, true, $separator); 

Fügen Sie dann optional den Namen der aktuellen Kategorie hinzu:

  if($ancestors){ $breadcrumb = $ancestors.$separator.' '.single_cat_title().''; }else{ $breadcrumb = ''.single_cat_title().''; } echo $breadcrumb; 

BEARBEITEN:

Es stellt sich fast so heraus, wie WordPress die Ausgabe erzeugt: get_category_parents nennt sich rekursiv ( siehe hier ), also ” get_category_parents man mit dieser Methode im Wesentlichen und führt sie manuell aus. Es gibt keine Haken, die diesen Effekt jedoch erzielen können.

Verwenden Sie native PHP-functionen

Es ist nicht so schwer, wenn man sich die String / Array-Handhabung auf php.net genauer ansieht.

 // 1. Calls the category parents including their links // 2. Explodes the string to an array with limit -1 to avoid outputting the last element // 3. Loops through the array and echos the breadcrumbs // 3.a Shows the » only after the first breadcrumb foreach( explode( '//', get_category_parents( $cat, true, '//' ), -1 ) as $index => $breadcrumb ) echo $index < = 0 ? $breadcrumb : " » {$breadcrumb}"; // 4. Echo the current category with a leading » echo ' » '.single_cat_title().''; 

Hinweis: Nicht getestet

Auf einer Kategorieseite können Sie auch tun, und es wird aktuelle Kategorie aus dem Breadcrumb verlassen und alle übergeordneten Kategorien werden angezeigt.

  echo get_category_parents( get_queried_object()->parent, true, ' → ' );