kulturbanause Blog

Responsive Design, WordPress, Konzeption, HTML, CSS, JS & UX/UI …

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.
Das folgende Snippet berücksichtigt alle Anforderungen die ich bisher an eine Breadcrumb gestellt habe. Da ich meinen Blog auch selbst als Archiv nutze, lege ich den entsprechenden Code hier ab. Sicher wird das Snippet euch auch mal weiterhelfen.

Workshops und Seminare von kulturbanause

Unsere Seminar-Termine für 2018 sind online!

Jetzt Tickets sichern!

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

Der Code wurde ursprünglich unter dimox.net/wordpress-breadcrumbs-without-a-plugin veröffentlicht. Ich habe ihn nur meinen Anforderungen entsprechend abgewandelt und die Begriffe übersetzt.

Jetzt bist du gefragt!

Hast du Anregungen, Ergänzungen, einen Fehler gefunden oder ist dieser Beitrag nicht mehr aktuell? Dann freuen wir uns auf deinen Kommentar.

Du kannst diesen Beitrag natürlich auch weiterempfehlen. Wir sind dir für jede Unterstützung dankbar!

Unterstützung bei WordPress-Projekten

Unsere WordPress Agentur ist auf die Entwicklung maßgeschneiderter WordPress-Themes und -Websites spezialisiert. Wenn du Unterstützung bei der Planung, Gestaltung und Entwicklung eines Projekts benötigst, helfen wir gerne weiter.
WordPress-Leistungsangebot →

Das könnte dich auch interessieren

72 Kommentare

  1. Rollstuhlbasketballer

    Verfasst am 24. August 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.

    • Jonas Hellwig

      Verfasst am 24. August 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…

  2. Michael

    Verfasst am 24. August 2011 um 19:11 Uhr.

    Mir gefällt´s! Danke!

  3. Matthias

    Verfasst am 25. August 2011 um 9: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?

    • Jonas Hellwig

      Verfasst am 25. August 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.

  4. Björn

    Verfasst am 28. August 2011 um 1: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ß

    • Jonas Hellwig

      Verfasst am 28. August 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.

  5. Canji

    Verfasst am 28. September 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

    • Jonas Hellwig

      Verfasst am 28. September 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

  6. Canji

    Verfasst am 28. September 2011 um 12:26 Uhr.

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

  7. Jan

    Verfasst am 3. November 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

    • Jonas Hellwig

      Verfasst am 4. November 2011 um 9:33 Uhr.

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

  8. Jan

    Verfasst am 4. November 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

  9. Jan

    Verfasst am 8. November 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

  10. Sylvi

    Verfasst am 20. Januar 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

  11. ToM

    Verfasst am 1. Februar 2012 um 19:33 Uhr.

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

    Viele Grüße
    ToM

  12. Kathleen

    Verfasst am 2. März 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!

  13. Christopher Dosin

    Verfasst am 1. Mai 2012 um 13:58 Uhr.

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

  14. Jan H.

    Verfasst am 17. Mai 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

  15. Mart

    Verfasst am 13. Juli 2012 um 14:39 Uhr.

    Nice one!

    Danke und keep updating.

  16. Kai Hebenstreit

    Verfasst am 18. Dezember 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' );

  17. Danielle

    Verfasst am 15. Februar 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!

  18. David

    Verfasst am 24. Februar 2013 um 19:48 Uhr.

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

  19. David

    Verfasst am 5. März 2013 um 22:12 Uhr.

    Keine Idee? :-(

  20. Sebastian

    Verfasst am 13. März 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.

    • andreas

      Verfasst am 24. Oktober 2013 um 17:20 Uhr.

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

      Danke und Gruss

      • andreas

        Verfasst am 14. April 2014 um 19:11 Uhr.

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

  21. Dag

    Verfasst am 25. März 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.

  22. Yvonne

    Verfasst am 27. März 2013 um 16:27 Uhr.

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

  23. Michi

    Verfasst am 6. April 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;

    }

  24. Fränk

    Verfasst am 12. April 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 :)

  25. Nils

    Verfasst am 19. April 2013 um 18:35 Uhr.

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

  26. Bryan

    Verfasst am 14. Mai 2013 um 11:38 Uhr.

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

  27. hans

    Verfasst am 6. August 2013 um 15:04 Uhr.

    vom feinsten ;)

  28. Robert

    Verfasst am 23. September 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

    • Jonas Hellwig

      Verfasst am 25. September 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.

  29. Robert

    Verfasst am 25. September 2013 um 15:38 Uhr.

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

    Gruß Robert

  30. undersound

    Verfasst am 31. Oktober 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!

  31. Max Alca

    Verfasst am 29. November 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!

  32. Michael

    Verfasst am 14. Januar 2014 um 15:12 Uhr.

    Hi,

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

  33. mr.Lox

    Verfasst am 18. März 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!

  34. Kai

    Verfasst am 9. Juni 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

  35. Michel

    Verfasst am 10. September 2015 um 16:28 Uhr.

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

  36. Marten

    Verfasst am 9. Oktober 2015 um 12:39 Uhr.

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

  37. Michael

    Verfasst am 15. Oktober 2015 um 11:29 Uhr.

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

  38. Sabina

    Verfasst am 25. November 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.

  39. David

    Verfasst am 18. Januar 2016 um 19:50 Uhr.

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

    Grüße

    David

  40. Christoph

    Verfasst am 5. April 2016 um 15:00 Uhr.

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

    Merci! :-)

  41. Exi

    Verfasst am 6. Mai 2016 um 3: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.

  42. Sven

    Verfasst am 22. Mai 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 :-)

    • Jonas Hellwig

      Verfasst am 23. Mai 2016 um 18:17 Uhr.

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

      • Sven

        Verfasst am 24. Mai 2016 um 1: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.

  43. Juergen

    Verfasst am 8. Juni 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

    • Simone

      Verfasst am 5. September 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.

      • Nils

        Verfasst am 3. Januar 2017 um 21:43 Uhr.

        Danke, darüber war ich auch gestolpert.

  44. Nils

    Verfasst am 7. März 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!

  45. Pascal

    Verfasst am 15. Mai 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

    • Jonas Hellwig

      Verfasst am 15. Mai 2017 um 17:45 Uhr.

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

  46. Markus

    Verfasst am 3. Juli 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

  47. Jörg

    Verfasst am 21. Juli 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

    • Jörg

      Verfasst am 1. August 2017 um 9: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

Kommentar verfassen

Dieser Blog lebt vom Feedback der Besucher! Also los, mach mit!
Bitte habe Verständnis dafür, dass Kommentare die mit dem Inhalt dieses Beitrags nichts zu tun haben, gelöscht werden.