Zur Suche springen Zur Navigation springen Zum Hauptinhalt springen Zum Footer springen

WordPress: Breadcrumb-Navigation ohne Plugin

Breadcrumb-Navigationen sind in komplexen Websites ein wichtiges Navigations- und Orientierungselement. Sobald Ihr WordPress als „echtes“ CMS einsetzt, werdet ihr allerdings merken, dass viele Plugins und Snippets zu sehr auf den Einsatz in Blogs ausgerichtet sind. Sobald diverse statische und hierarchisch verschachtelte Seiten und Custom Post Types im Spiel sind, stößt so manche Breadcrumb an ihre Grenzen.

Code für die functions.php

Den folgenden Code fügt Ihr in die functions.php eures WordPress-Themes ein.

<?php // breadcrumb
function nav_breadcrumb() {
 
 $delimiter = '&raquo;';
 $home = 'Home'; 
 $before = '<span class="current-page">'; 
 $after = '</span>'; 
 
 if ( !is_home() && !is_front_page() || is_paged() ) {
 
 echo '<nav class="breadcrumb">Sie sind hier: ';
 
 global $post;
 $homeLink = get_bloginfo('url');
 echo '<a href="' . $homeLink . '">' . $home . '</a> ' . $delimiter . ' ';
 
 if ( is_category()) {
 global $wp_query;
 $cat_obj = $wp_query->get_queried_object();
 $thisCat = $cat_obj->term_id;
 $thisCat = get_category($thisCat);
 $parentCat = get_category($thisCat->parent);
 if ($thisCat->parent != 0) echo(get_category_parents($parentCat, TRUE, ' ' . $delimiter . ' '));
 echo $before . single_cat_title('', false) . $after;
 
 } elseif ( is_day() ) {
 echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> ' . $delimiter . ' ';
 echo '<a href="' . get_month_link(get_the_time('Y'),get_the_time('m')) . '">' . get_the_time('F') . '</a> ' . $delimiter . ' ';
 echo $before . get_the_time('d') . $after;
 
 } elseif ( is_month() ) {
 echo '<a href="' . get_year_link(get_the_time('Y')) . '">' . get_the_time('Y') . '</a> ' . $delimiter . ' ';
 echo $before . get_the_time('F') . $after;
 
 } elseif ( is_year() ) {
 echo $before . get_the_time('Y') . $after;
 
 } elseif ( is_single() && !is_attachment() ) {
 if ( get_post_type() != 'post' ) {
 $post_type = get_post_type_object(get_post_type());
 $slug = $post_type->rewrite;
 echo '<a href="' . $homeLink . '/' . $slug['slug'] . '/">' . $post_type->labels->singular_name . '</a> ' . $delimiter . ' ';
 echo $before . get_the_title() . $after;
 } else {
 $cat = get_the_category(); $cat = $cat[0];
 echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
 echo $before . get_the_title() . $after;
 }
 
 } elseif ( !is_single() && !is_page() && get_post_type() != 'post' && !is_404() ) {
 $post_type = get_post_type_object(get_post_type());
 echo $before . $post_type->labels->singular_name . $after;
 

 } elseif ( is_attachment() ) {
 $parent = get_post($post->post_parent);
 $cat = get_the_category($parent->ID); $cat = $cat[0];
 echo get_category_parents($cat, TRUE, ' ' . $delimiter . ' ');
 echo '<a href="' . get_permalink($parent) . '">' . $parent->post_title . '</a> ' . $delimiter . ' ';
 echo $before . get_the_title() . $after;
 
 } elseif ( is_page() && !$post->post_parent ) {
 echo $before . get_the_title() . $after;
 
 } elseif ( is_page() && $post->post_parent ) {
 $parent_id = $post->post_parent;
 $breadcrumbs = array();
 while ($parent_id) {
 $page = get_page($parent_id);
 $breadcrumbs[] = '<a href="' . get_permalink($page->ID) . '">' . get_the_title($page->ID) . '</a>';
 $parent_id = $page->post_parent;
 }
 $breadcrumbs = array_reverse($breadcrumbs);
 foreach ($breadcrumbs as $crumb) echo $crumb . ' ' . $delimiter . ' ';
 echo $before . get_the_title() . $after;
 
 } elseif ( is_search() ) {
 echo $before . 'Ergebnisse für Ihre Suche nach "' . get_search_query() . '"' . $after;
 
 } elseif ( is_tag() ) {
 echo $before . 'Beiträge mit dem Schlagwort "' . single_tag_title('', false) . '"' . $after;

 } elseif ( is_404() ) {
 echo $before . 'Fehler 404' . $after;
 }
 
 if ( get_query_var('paged') ) {
 if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ' (';
 echo ': ' . __('Seite') . ' ' . get_query_var('paged');
 if ( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() ) echo ')';
 }
 
 echo '</nav>';
 
 } 
} 
?>

Mit diesem Snippet bindet Ihr die Breadcrumb im Theme ein. Dabei ist es irrelevant ob sich die Navi innerhalb oder außerhalb des WordPress-Loops befindet.

 <?php if (function_exists('nav_breadcrumb')) nav_breadcrumb(); ?>

Je nachdem, auf welcher Unterseite des Projektes Ihr euch befindet, wird nun die Breadcrumb dargestellt. Im Gegensatz zu vielen anderen Lösungen die ich kenne, arbeitet diese Breadcrumb einwandfrei mit Archiven, Seiten und Kategorien. Auch Custom Post Types werden berücksichtigt.

WordPress-Breadcrumb ohne Plugin

Geschrieben von Jonas

Benutzerbild

Jonas ist Gründer der Agentur kulturbanause und des kulturbanause Blogs. Er arbeitet an der Schnittstelle zwischen UX/UI Design, Frontend und Redaktion und hat zahlreiche Fachbücher und Video-Trainings veröffentlicht. Jonas Hellwig ist regelmäßig als Sprecher auf Fachveranstaltungen anzutreffen und unterstützt mit Seminaren und Workshops Agenturen und Unternehmen bei der Planung, der Gestaltung und der technischen Umsetzung von Web-Projekten.

Jonas Hellwig bei Xing

Feedback & Ergänzungen – 71 Kommentare

  1. angelina
    schrieb am 05.10.2021 um 14:57 Uhr:

    Hallo Jonas,
    vielen Dank für diesen Code, auch viele Jahre später ist er noch Gold wert. :)

    Ich habe eine Frage, und zwar gehts um Costum Post Types mit Taxonomien. Hier habe ich leider das Problem, dass ich auf dem entsprechenden Post nicht mehr über die Breadcrump zurück komme, da ich die URL „manipuliert“ habe. Also die URL lautet bspw. „../news/kategorie/beitrag“ – und leider führt mich die Breadcrump zu „…news/%news_category%“ und nicht zu „..news/kategorie“ :(
    Hast du eine Idee, wie ich das ändern kann?
    1000 Dank im Voraus! :)

    Beste Grüße, Angelina

    Antworten
  2. bjoluc
    schrieb am 14.06.2019 um 21:46 Uhr:

    Hi zusammen und Dank an Jonas,
    ich habe den Code hier mal verallgemeinert und als kleines composer PHP-Paket veröffentlicht: https://github.com/bjoluc/wordcrumbs
    Damit sind Anpassungen an Formatierung und Funktion leichter. Ich hoffe das hilft dem ein oder anderen!
    @Jonas Ich würde mich riesig über einen Verweis im Artikel freuen!

    Antworten
  3. Daniel
    schrieb am 31.01.2019 um 10:16 Uhr:

    Hi Jonas,

    danke für den Code. Hat alles wunderbar geklappt!
    Weiter so!

    Viele Grüße

    Antworten
  4. David
    schrieb am 04.09.2018 um 17:21 Uhr:

    Super genial!
    Danke dir, habe das Snippet bereits auf mehreren Seiten eingesetzt.

    Antworten
  5. Jörg
    schrieb am 21.07.2017 um 18:05 Uhr:

    Hallo Jonas,

    danke vielmals für diese Geniale Breadcrumb, die auch problemlos in meiner neuen Testumgebung funktioniert (auch im Child-Theme).
    Parallel läuft bei mir auch Woocommerce und die entsprechende WC Breadcrumb.
    Wenn ich nun von einem Artikel in eine Single-Page (einfache Seite – Bsp.: Tips zum Produkt) verlinke weiß diese Seite natürlich nicht mehr, von welchem Produkt man kam.
    Gibt es hier eine Möglichkeit dieses Skript zu erweitern?
    Oder wäre es vielleicht besser nur diese Breadcrumb zu nehmen, in WC zu integrieren und die BC von Woocommerce zu deaktivieren?
    Für jeden Tip und Lösungsvorschalg wäre ich sehr dankbar.

    Viele Dank

    Antworten
    • Jörg
      schrieb am 01.08.2017 um 09:29 Uhr:

      Also, ich habe mir mal eine „Notlösung“ zusammengefrickelt, ich habe leider keine Zeit mir das ganze geniale Skript ausführlichst anzusehen und bin auf folgende Zwischenlösung gekommen.

      Erstmal hole ich mir die zuvor besuchte Seite mit HTTP_Referer
      ($referer = getenv(„HTTP_REFERER“);) und schreibe das in meine Variable z.B. in $pback. Dann füge ich in dem Skript, nach der Zeile „$page = get_page($parent_id);“ also in der while-Schleife, für die Ausgabe hinzu:

      if ( is_page_template( ‚template-tips.php‘ ) ) {
      $breadcrumbs[] = sprintf($link, get_permalink($page->ID), get_the_title($page->ID).$pback);
      }

      Also wenn jemand zuvor auf meinem template war, kriegt er die Breadcrumb mit dem vorigen HTTP_Referer. Das ganze kann man noch fortführen, wenn man in den HTTP_Referer überprüft, ob dieser z.B. den gleichen Domainnamen beinhaltet oder von localhost ist, bzw. von extern kommt und die Ausgabe entsprechend anpassen. Ich leite hier einfach zur Startseite, wenn jemand von externen Quellen kommt – dann gab es ja vorher auch kein Besuch auf einer Produktseite. Eine bessere Idee habe ich hier gerade nicht, aber für meine Zwecke dürfte es reichen.
      So 100%ig weiß ich aber noch nicht wie das mit $parent_id und $frontpage_id ist…
      Sicherlich nicht gerade die elegante Lösung, aber es scheint zu funktionieren und wenn jemand eine schönere Lösung hat… -:)

      Grüße Jörg

      Antworten
  6. Markus
    schrieb am 03.07.2017 um 11:56 Uhr:

    Hallo Jonas,

    danke für den tollen und flexiblen Breadcrumb Code.
    Gibt es auch die Möglichkeit für die Seiten (is_page) an stelle des Titels (get_the_title($page->ID)) den Menünamen auszugeben, den ich im Menü manuell angelegt habe. Optimal wäre vielleicht eine IF-Lösung.

    Vielen Dank

    Antworten
  7. Pascal
    schrieb am 15.05.2017 um 11:33 Uhr:

    Hey Jonas,

    danke für das Snippet. Ich wundere mich nur, dass anscheinend noch niemandem aufgefallen ist, dass der Part am Ende mit der Abfrage elseif(is_tag()) doppelt drin steht. Macht so keinen Sinn und sollte entfernt werden.

    Beste Grüße

    Pascal

    Antworten
    • Jonas Hellwig
      schrieb am 15.05.2017 um 17:45 Uhr:

      Hallo Pascal, vielen Dank. In der Tat überraschend, dass es bisher niemand bemerkt hat. Jetzt ist die Dopplung entfernt.

      Antworten
  8. Nils
    schrieb am 07.03.2017 um 22:13 Uhr:

    Hallo Jonas,

    erst einmal vielen Dank für das Snippet. Ich versuche derzeit die einzelnen Brotkrumen mit Listen-Elementen zu umschließen. Ich bekomme es leider nicht hin, hast du eine Idee, wie es bei allen Punkten funktioniert? Bei jenen die ein Element im Code haben bekomme ich es hin, aber z.B. bei den Kategorien nicht.

    Vielen Dank im Voraus!

    Antworten
    • bjoluc
      schrieb am 14.06.2019 um 21:55 Uhr:

      Hallo Nils,
      die Frage ist zwar jetzt schon gut zwei Jahre alt, aber wenn du das Problem nochmal haben solltest: Du kannst WordCrumbs (https://github.com/bjoluc/wordcrumbs) mit dem HtmlListFormatter verwenden :)

      LG bjoluc

      Antworten
  9. Juergen
    schrieb am 08.06.2016 um 14:50 Uhr:

    Ich möchte die Hirachie meine Hauptmenüs durch dein Breadcrumb Snippet darstellen. Leider funktioniert das nicht. Kennst du die Lösung für dieses Problems?

    Menü Hirachie

    A
    B
    B1
    B2
    C

    Breadcrumb sollte sein:

    Home > B > B1 sein.

    Angezeigt bekomme ich:

    Home > B1

    Antworten
    • Simone
      schrieb am 05.09.2016 um 18:58 Uhr:

      Hallo Juergen,
      Du mußt im Backend die Seiten mit den jeweiligen Elternseiten zuordnen. Wenn Du es richtig gemacht hast, siehst Du im Backend die Unterpunkte mit einem vorangestelltem Bindestrich.

      Gehe im Backend auf die Seiten, dann auf die Seite „B1“ / „B2“ ins Quickedit und wähle B als Elternelement aus.

      Dann müßte es funktionieren.

      Antworten
      • Nils
        schrieb am 03.01.2017 um 21:43 Uhr:

        Danke, darüber war ich auch gestolpert.

  10. Sven
    schrieb am 22.05.2016 um 13:28 Uhr:

    Hallo Jonas,

    ich bin in den Theme Einstellungen auf das Wort Breadcrumbs aufmerksam geworden. Da ich in WordPress noch nicht so riesen Erfahrung haben, wollte ich gern mal wissen was das genau ist und was ich damit machen kann. Vielleicht ist das für meinen Seitenaufbau eine Option die ich auch nutzen könnte.

    Würde mich sehr über eine Antwort freuen.
    Vielen Dank und einen schönen Sonntag :-)

    Antworten
    • Jonas Hellwig
      schrieb am 23.05.2016 um 18:17 Uhr:

      Hallo Sven, schau mal hier. Hilft dir das weiter?

      Antworten
      • Sven
        schrieb am 24.05.2016 um 01:37 Uhr:

        Dankeschön. Wenn ich das also richtig sehe ist das so eine Art Menüstruktur die eine bessere Navigation unterstützen soll. Na gut muss ich jetzt nicht wirklich nutzen. So viele Unterseiten hab ich in den meisten Fällen nicht.

  11. Exi
    schrieb am 06.05.2016 um 03:33 Uhr:

    Hey,

    super Script aber ich habe bei mir ein Fehler entdeckt. Wenn ich eine Suche starte was kein Ergebniss hat, wird mir da ein Fehler ausgegeben (Debug on true).

    Sonst funktioniert alles problemlos.

    Antworten
  12. Christoph
    schrieb am 05.04.2016 um 15:00 Uhr:

    Cool, gesucht und gefunden! Der Code erspart mir ein zusätzliches und offensichtlich sinnloses Plugin!

    Merci! :-)

    Antworten
  13. David
    schrieb am 18.01.2016 um 19:50 Uhr:

    Super Arbeit, funktioniert problemlos.
    Danke fürs teilen!

    Grüße

    David

    Antworten
  14. Sabina
    schrieb am 25.11.2015 um 14:37 Uhr:

    Vielen Dank für den Code. Er funktioniert wunderbar und ist mit kleinen Anpassungen auch für Bootstrap wunderbar adaptierbar.

    Antworten
  15. Michael
    schrieb am 15.10.2015 um 11:29 Uhr:

    Hi, genau das habe ich gesucht. Ich hoffe, die Modifikation funktioniert auch noch in dieser WP Version.

    Antworten
  16. Marten
    schrieb am 09.10.2015 um 12:39 Uhr:

    Vielen Dank – funktioniert top und lässt sich easy erweitern!

    Antworten
  17. Michel
    schrieb am 10.09.2015 um 16:28 Uhr:

    Ich danke dir für den Code… hat mir einiges an eigener Arbeit erspart :-)
    Top!

    Antworten
  18. WordPress Breadcrumbs: Keineswegs brotlose Kunst
    schrieb am 24.08.2015 um 13:49 Uhr:

    […] Über den Code: Hierfür müssen Sie die bestehende functions.php Ihres Themes bearbeiten und den entsprechenden Code der Breadcrumbs an die gewünschte Stelle einfügen. Da wir uns nicht mit fremden Federn schmücken wollen und auch nicht wirklich etwas Neues diesbezüglich zu vermelden ist, verweisen wir an dieser Stelle an den Blog des Kulturbanausen Jonas Hellwig. Dort ist alles dokumentiert und aufgeführt. Zum Artikel von Jonas Hellwig. […]

    Antworten
  19. Kai
    schrieb am 09.06.2014 um 13:03 Uhr:

    Ein Super Code. Genau das habe ich gesucht.
    Vielen vielen Dank.

    Ich würde ihn gerne noch erweitern, kann aber selber so etwas nicht realisieren … vielleicht hast Du ja eine Idee.

    Schön wäre es, wenn in der Navigation folgende Vorschau der Unterseiten angezeigt wird (Beispiel anhand meiner Offline Seite):
    Home > PKW | LKW | Bike …
    Auswahl „PKW“:
    Home > PKW > Audi | Daimler | Porsche | VW | …
    und bei der Auswahl von „Daimler“:
    Home > PKW > Daimler > GLK | SLK | MLK | Sprinter | …

    usw.

    Ich würde mich freuen, wenn ich hier einen Lösungsvorschlag bekommen könnte.

    Danke
    Kai

    Antworten
  20. mr.Lox
    schrieb am 18.03.2014 um 12:15 Uhr:

    Hallo an Alle! Ist es möglich mit WordPress Breadcrumbs in der URL (in den SERPS) anzeigen zu lassen? Ich bin mir gar nicht sicher ob man die so überhaupt nennt. Hab diese bei größeren Seiten wie gelbeseiten gesehen.. Vielen Dank schon mal im Voraus für die Antwort!

    Antworten
  21. Michael
    schrieb am 14.01.2014 um 15:12 Uhr:

    Hi,

    Gibt es einen Weg bestimmte Seiten nicht als Link anzeigen zu lasen , quasi nur als übergeordnete Kategorien.

    Antworten
  22. Max Alca
    schrieb am 29.11.2013 um 16:49 Uhr:

    Hi,

    ich arbeite mit FlatUI Kit Pro und möchte gern mit deinem Snippet arbeiten, leider funktioniert es nicht, die Cat in eine Seperate zu bringen.

    Irgendwelche Ideen? Über Ratschläge freue ich mich sehr. DANKE!

    Antworten
  23. undersound
    schrieb am 31.10.2013 um 11:45 Uhr:

    Hallo. Sehr schöner Code, ich bin verzweifelt auf der Suche nach einer geeigneten Lösung für die Breadcrumbs – und es wundert mich, dass es da so gut wie keine brauchbaren Lösungen gibt.
    Die Lösung hier ist jetzt die erste, die mich weiterbringt.
    Ich hätte zwei etwas spezielle Fragen:
    Ich möchte das letzte Element des Trails in eine neue Zeile umbrechen und anders stylen, allerdings sind meine PHP-Kenntnisse etwas beschränkt und ich komme nicht drauf, wie ich das anstellen könnte.
    Außerdem wäre es klasse, wenn Seiten/Custom Post Types mit einer Klasse „class=ID“ ausgegeben würden, damit vor diesen per CSS Icons ausgegeben werden können….
    Zu Speziell, oder könntest du mir weiter helfen?

    Vielen Dank schon im Voraus!

    Antworten
  24. Robert
    schrieb am 25.09.2013 um 15:38 Uhr:

    Vielen Dank dir! Ich werde es dann bei Gelegenheit ausprobieren. Tolles Tutorial, welches sehr hilfreich ist.

    Gruß Robert

    Antworten
  25. Robert
    schrieb am 23.09.2013 um 21:42 Uhr:

    Hallo,

    steinigt mich für die Frage, aber in welche Datei gehört jetzt das 2. (kurze) Snippet?

    Gruß Robert

    Antworten
    • Jonas Hellwig
      schrieb am 25.09.2013 um 10:04 Uhr:

      Das zweite Snippet gehört in die Datei in der die Navigation erscheinen soll. Also beispielsweise in die header.php oder die single.php – je nach Aufbau des Themes.

      Antworten
  26. hans
    schrieb am 06.08.2013 um 15:04 Uhr:

    vom feinsten ;)

    Antworten
  27. Bryan
    schrieb am 14.05.2013 um 11:38 Uhr:

    Super Beispiel, funktioniert 1A. Danke dafür. Gruß.

    Antworten
  28. Nils
    schrieb am 19.04.2013 um 18:35 Uhr:

    Danke für den Code, hab ihn heute eingebaut.

    Antworten
  29. Fränk
    schrieb am 12.04.2013 um 13:20 Uhr:

    Schicke Anleitung, bin zufällig drüber gestolpert und habe das gleich mal ausprobiert. Funktioniert prima … ausser einer Sache. (Weil ich jetzt leider auch nicht die Leuchte in PHP bin) wie bekomme ich es denn hin, dass mir zusätzlich zum Untermeüpunkt auch der dazugehörige übergeordnete Menüpunkt angezeigt wird (habe ein Menü mit Ober- und Unterpunkten).

    Danke schonmal :)

    Antworten
  30. Michi
    schrieb am 06.04.2013 um 12:47 Uhr:

    Coole Anleitung!!!
    Bin nicht der Hirsch in PHP. Habe WooCommerce. Möchte nun in WooCommerce die WooCommerce Breadcrumb angezeigt haben und nicht die nav_breadcrumb. Auf allen anderen Seiten jedoch die nav_breadcrumb.
    Dies funktioniert in der header.php tadellos, aber eben auf der WooCommerce Shopseite werden beide angezeigt. Danke für die Hilfe! Kniefall! Hier mein Ansatz – wenn ich bloss PHP könnte.

    if (keine ahnung wie, shopseite – lass es)
    if (function_exists(’nav_breadcrumb‘)) nav_breadcrumb(); {
    // neu
    $breadcrumb = nav_breadcrumb;

    }

    Antworten
  31. Yvonne
    schrieb am 27.03.2013 um 16:27 Uhr:

    Dankschön für das Snippet, funktioniert super ;o)

    Antworten
  32. WordPress Breadcrumb Snippet | Yvonne Hofmann
    schrieb am 26.03.2013 um 08:38 Uhr:
  33. Dag
    schrieb am 25.03.2013 um 10:52 Uhr:

    Danke, dass du den Code zur Verfügung stellst! Hab deinen Artikel jetzt erst gefunden, aber lieber spät als nie.

    @Sebastian: Das mit den Div-Containern ist ein guter Hinweis. Werde ich direkt mal ausprobieren, danke.

    Antworten
  34. Sebastian
    schrieb am 13.03.2013 um 19:49 Uhr:

    Hallo,

    @David: Die Breadcrumb-Navigation wird umschlossen von den Div-Container id=“breadcrumb“ und somit kannst du das Ganze via CSS stylen z.B. #breadcrumb a { color: #FFF; etc. }. Die Anzeige der aktuellen Unterseite bekommt span class=“current“ zugewiesen und kann somit über #breadcrumb span.current { … } formatiert werden.

    Antworten
    • andreas
      schrieb am 24.10.2013 um 17:20 Uhr:

      Wie genau kann ich das mit den CSS Klassen machen?
      Ich bekomme es einfach nicht hin.

      Danke und Gruss

      Antworten
      • andreas
        schrieb am 14.04.2014 um 19:11 Uhr:

        So wollte nur mal sagen das ich es dann auch schon lange hinbekommen habe ….

  35. David
    schrieb am 05.03.2013 um 22:12 Uhr:

    Keine Idee? :-(

    Antworten
  36. David
    schrieb am 24.02.2013 um 19:48 Uhr:

    Sorry, dass ich frage, aber wie kann man das Breadcrumb denn elegant CSS-stylen?

    Antworten
  37. Danielle
    schrieb am 15.02.2013 um 22:18 Uhr:

    Hi Jonas,
    vielen Dank für das Snippet, genau das habe ich gesucht!

    Bei der Suchergebnisliste funktioniert es bei mir aber nur, wenn ich in der Zeile

    } elseif ( !is_single() && !is_page() && get_post_type() != ‚post‘ && !is_404()) { (…)

    && !is_search() hinzufüge.

    Viele Grüße!

    Antworten
    • Jonas Hellwig
      schrieb am 16.02.2013 um 09:06 Uhr:

      Vielen Dank für die Ergänzung.

      Antworten
  38. Kai Hebenstreit
    schrieb am 18.12.2012 um 20:09 Uhr:

    Danke für die wirklich sehr gute Breadcrumb-Funktion. Anbei noch die Funktion mit der man die Breadcrumb als Shortcode integrieren kann.

    function breadcrumb ( $atts) {
    ob_start();
    ?>

    <?php
    $breadcrumb = ob_get_contents();
    ob_end_clean();
    return $breadcrumb;
    }
    add_shortcode( 'breadcrumb', 'breadcrumb' );

    Antworten
  39. Mart
    schrieb am 13.07.2012 um 14:39 Uhr:

    Nice one!

    Danke und keep updating.

    Antworten
  40. Jan H.
    schrieb am 17.05.2012 um 21:23 Uhr:

    Hallo Jonas,

    erstmal vielen Dank für diese Funktion, war im groben genau das, was ich gesucht habe. Mir ist nur folgendes aufgefallen: Wenn ich auf der Seite mit den Suchergebnissen bin, wird als letzte Stufe der Breadcrumb ja „Ergebnisse für Ihre Suche nach..“ angezeigt. Allerdings nur, wenn die Suche auch Ergebnisse liefert. Wird der Suchstring nicht gefunden, bleibt die letzte Stufe der BC leer. Ich habe das jetzt erstmal so gelöst, daß ich per Debugstrings gesucht habe, „wo“ in der langen elseif-kette ich dann lande. Das ist das elseif in Zeile 50, dort hab ich dann einfach folgendes eingefügt:

    if ( get_search_query() != “ ) {
    echo $before . ‚“‚ . get_search_query() . ‚“ nicht gefunden‘ . $after;
    } else { ….

    Aber ich habe das Gefühl, das ist nicht der eleganteste Weg. Hast Du eine bessere Idee?

    Danke und VG,
    Jan

    Antworten
  41. Christopher Dosin
    schrieb am 01.05.2012 um 13:58 Uhr:

    VIelen Dank für den Code Snippet, funktioniert wunderbar :)

    Antworten
  42. Kathleen
    schrieb am 02.03.2012 um 10:40 Uhr:

    Deine Breadcrumb ist wirklich mal eine sehr gute Sache! Ich habe schon einige Codes von verschiedenen Leuten ausprobiert und bisher hat keiner so einwandfrei funktioniert. Ich musste hier nur einige kleine Sachen anpassen, damit es für mein Theme optimal ist. Vielen Dank für den Code!

    Antworten
  43. ToM
    schrieb am 01.02.2012 um 19:33 Uhr:

    Vielen Dank für das Code-Snippet.
    Können wir gut gebrauchen!

    Viele Grüße
    ToM

    Antworten
  44. Kein Stillstand – weitere kleine Veränderungen hier im Blog | Sylvis Blog
    schrieb am 29.01.2012 um 16:05 Uhr:

    […] but not least meiner Blog-Verbesserungen ist nun die weitere Navigations-Funktion per Breadcrumb. Dank Jonas Code wurde dieser wunderbar hier im Blog umgesetzt.  Ich musste nur den Abstand per CSS ein wenig […]

    Antworten
  45. Sylvi
    schrieb am 20.01.2012 um 21:44 Uhr:

    Hallo Jonas,

    das nenne ich mal eine super beschriebene Erklärung. Ich wollte kein Plugin für diese Funktion installieren und bin daher bei meiner Google-Suche auf Deinen Beitrag gestoßen.

    Das ging ruckzuck und sieht klasse aus! Ein herzliches Dankeschön.

    Gruß Sylvi

    Antworten
  46. Jan
    schrieb am 08.11.2011 um 17:01 Uhr:

    Hallo,
    vielen Dank für den Link zu den Conditional Tags!
    Hast du vielleicht noch einen Link wo ich nachlesen kann wie ich den entsprechenden Menütitel und nicht den Beitragstitel auslesen kann? Also sowas wie „get_the_title()“ nur fürs Menü.

    Viele Grüße

    Antworten
  47. Jan
    schrieb am 04.11.2011 um 16:19 Uhr:

    Hallo Jonas,
    ich habe ein Seitentemplate welches anders aufgebaut ist als der Rest der Seite, dieses Template hat keine Sidebar auf der linken Seite.
    Nun habe ich das problem das die Breadcrumbs falsch sitzen. Nun war meine Intention einfach den Braedcrumbs beim Aufruf () in den jeweiligen Templates eine Klasse mitzugeben um die Position anzupassen.

    Viele Grüße,
    Jan

    Antworten
    • Jonas Hellwig
      schrieb am 07.11.2011 um 18:41 Uhr:

      @Jan: Die Breadcrumb bekommt ja eine ID mitgegeben. Die kannst du natürlich um eine Klasse ergänzen. Auf welcher Seite im WordPress-Theme sich der User befindet, kannst du mit Conditional Tags herausfinden: http://codex.wordpress.org/Conditional_Tags

      Antworten
  48. Jan
    schrieb am 03.11.2011 um 20:30 Uhr:

    Hallo,
    meine PHP-Kenntnisse sind jetzt nicht die besten deshalb frag ich mal grad mal nach :).
    Ich möchte den breadcrumbs auf bestimmten Templateseiten (template-full-width.php) eine eigene Klasse mitgeben. Wie bekomme ich das hin?

    Viele Grüße

    Antworten
    • Jonas Hellwig
      schrieb am 04.11.2011 um 09:33 Uhr:

      @Jan: Wo möchtest du denn eine Klasse hinzufügen? Außen herum ist ja bereits ein Container.

      Antworten
  49. Canji
    schrieb am 28.09.2011 um 12:26 Uhr:

    Super, vielen Dank für das schnelle Feedback. Man lernt jeden Tag dazu! ;-)

    Antworten
  50. Canji
    schrieb am 28.09.2011 um 11:42 Uhr:

    Hallo Jonas,

    wärst Du so nett hier kurz zu posten, wie ich die Breadcrumb auch auf die Startseite bekomme (siehe vorheriger Post)? Da mein Blog in einem Unterverzeichnis liegt, ist die Blogstartseite bei mir nicht die eigentliche Startseite. Deswegen macht es hier schon durchaus Sinn auch eine Breadcrumb zu haben. ;)

    Ich wäre Dir sehr dankbar. Dein Blog ist eine wahre Schatzkammer an Tipps!

    Liebe Grüße
    Canji

    Antworten
    • Jonas Hellwig
      schrieb am 28.09.2011 um 12:09 Uhr:

      @Canji: Es gibt zwei Möglichkeiten die ich hier verwenden würde. Entweder du passt den oben abgebildeten Code an. In Zeile 9

      if ( !is_home() && !is_front_page() || is_paged() ) {

      wird ja festgelegt auf welchen Seiten dieBreadcrumb NICHT angezeigt wird. Hier kannst du

      !is_home() && !is_front_page() ||

      entfernen und die Breadcrumb so auch auf der Startseite anzeigen. Diese Lösung ist aber Abhängig von deiner Theme-Struktur.

      Alternativ kannst du manuell auf der Startseite einen Link einbinden. Dafür gibt es ja den Template-Tag bloginfo. http://codex.wordpress.org/Function_Reference/bloginfo

      Antworten
  51. Björn
    schrieb am 28.08.2011 um 01:40 Uhr:

    Hallo,

    ist es beabsichtigt das die breadcrumb Navigation nur dann zu sehen ist, wenn eine Unterseite angewählt wurde?
    Ich habe den gesammten Code in die functions.php kopiert (ganz unten), und dann den Code schnipsel so eingefügt das die brotkrümmelnavi unter meinen Links ist.

    Wie oben schon beschrieben ist diese nur zu sehen wenn ich auf eine Unterseite bin zB Leistungen > Käfer zertrampeln.

    Gruß

    Antworten
    • Jonas Hellwig
      schrieb am 28.08.2011 um 10:37 Uhr:

      @Björn: Ja das ist Absicht. Die Startseite hat ja für gewöhnlich keine Breadcrumb. Und wenn du sie doch brauchen solltest kannst du sie ja noch ins Template einfügen.

      Antworten
  52. Matthias
    schrieb am 25.08.2011 um 09:20 Uhr:

    Hi Jonas, danke für den guten Artikel! Ich habe mir damals die Breadcrumbs in der functions.php auch selbst zusammengebaut, bis ich irgendwann merkte, dass ich mit dem PlugIn Breadcrumb-NavX das selbe erreiche, allerdings mit dem wesentlich einfacheren Einstellmöglichkeiten über das Backend. Siehst Du einen Vorteil in der gecodeten Version gegenüber einem PlugIn, vielleicht in Ladezeit?

    Antworten
    • Jonas Hellwig
      schrieb am 25.08.2011 um 14:21 Uhr:

      @Mathias: Hi Mathi, also für mich ist eine Breadcrumb ganz einfach kein Plugin. Das hatte ich oben ja schon einmal erwähnt ;) Aus folgendem Grund: Ein Plugin erweitert in meinen Augen WordPress um bestimmte Funktionen. Zum Beispiel um ein Datenbank-Backup, eine automatische XML-Sitemap etc.
      Die Breadcrumb bietet allerdings keine neuen Funktionen sondern stellt nur vorhandene Infos im Theme dar. Es gehört also ganz eindeutig ins Theme – also in die functions.php – und nicht in ein Plugin. Aus diesem Grund suche ich bei einer solchen Funktion dann auch gar nicht nach einem Plugin sondern nach einer eigenen Lösung.

      Ob der oben gezeigte Code im Vergleich zu deinem Plugin jetzt besser oder schneller oder nichts von allem ist, kann ich nicht sagen.

      Antworten
  53. Michael
    schrieb am 24.08.2011 um 19:11 Uhr:

    Mir gefällt´s! Danke!

    Antworten
  54. Rollstuhlbasketballer
    schrieb am 24.08.2011 um 12:27 Uhr:

    Toller und informativer Artikel. Aber was ist nun direkt der Vorteil dieser Variante? Entweder ich schleife ein Plugin mit oder ich „mülle“ meine functions.php zu.

    Antworten
    • Jonas Hellwig
      schrieb am 24.08.2011 um 13:18 Uhr:

      @Rollstuhlbasketballer: Für mich gehört die Breadcrumb eindeutig zum Theme und somit in die functions.php – aber darüber kann man ausführlich diskutieren :) Außerdem mag ich es lieber den Code direkt in meinem Theme einzusetzen und auch zu verstehen bzw. verändern zu können. Bei Plugins habe ich häufig das Gefühl nicht alle Bereiche der Seite voll im Blick zu haben. Dafür muss man natürlich dann auch Updates selbst vornehmen…

      Antworten

Kommentar zu dieser Seite

Wir freuen uns über Anregungen, Ergänzungen oder Hinweise zu Fehlern. Wir lesen jeden Eintrag, veröffentlichen aber nur, was den Inhalt sinnvoll ergänzt.

WordPress-Projekte mit kulturbanause

Wir wissen wovon wir reden. Wir setzen WordPress seit über 10 Jahren erfolgreich ein und realisieren maßgeschneiderte Websites auf Basis dieses großartigen CMS.

WordPress-Leistungsangebot →

Schulungen von kulturbanause

Wir bieten Seminare und Workshops zu den Themen Konzept, Design und Development. Immer up-to-date, praxisnah, kurzweilig und mit dem notwendigen Blick über den Tellerrand.

Übersicht Schulungsthemen →