Leider werden viel zu oft Plugins für simple Funktionen innerhalb einer WordPress Installation genutzt. Um dieses Manko oder vielleicht auch eher der Faulheit ein wenig entgegen zu steuern, bin ich gerade dabei meine Blogs ein wenig zu entsaften und Plugin-frei zu machen. Gestern war ich dann auf der Suche nach einer anständigen Breadcrumb für einen meiner Blogs und bin bei “Cats who code” fündig geworden, wie man eine Breadcrumb ganz simpel in der functions.php erzeugt und diese dann auf jeder beliebigen Seite (single.php, archiv.php usw.) benutzen kann.
Um unsere die neue Breadcrumb-Funktion in unserer WordPress Theme zu inplementieren gehen wir wie folgt vor:
Wir gehen in das Verzeichnis von unserem verwendetem Theme (…/wp-content/themes/THEME-NAME) und öffnen dort die functions.php. Um jetzt dort eine neue Funktion für unser Theme zu integrieren müssen wir einfach nur folgenden Code in die Datei kopieren:
function the_breadcrumb() {
if (!is_home()) {
echo '<a href="';
echo get_option('home');
echo '">';
bloginfo('name');
echo "</a> » ";
if (is_category() || is_single()) {
the_category('title_li=');
if (is_single()) {
echo " » ";
the_title();
}
} elseif (is_page()) {
echo the_title();
}
}
}
Wenn wir nun unsere neue Funktion im Theme aufrufen möchten, müssen wir lediglich folgenden Code an eine beliebige Stelle im Theme (single.php, archiv.php etc.) kopieren:
<?php the_breadcrumb(); ?>
Wenn wir nun im Frontend unserer Website nachsehen, wird an der gewünschten Stelle die Breadcrumb erscheinen und wir können mit dem Layout unserer Breadcrumb beginnen.
Der orginal Artikel stammt von “Cats who Code” und ist hier zu lesen:
http://www.catswhocode.com/blog/how-to-breadcrumb-function-for-wordpress
Was genau ist eigentlich eine Breadcrumb, Brotkrumen-Pfad oder Hänsel und Gretel Navigation? (hat noch jemand eine der vielen Definitionen? Dann bitte ein Kommentar dazu)
Wikipedia definitiert eine Breadcrumb folgendermaßen:
Bei breadcrumbs handelt es sich um Navigationselemente, die den Pfad zum aktuellen Element (Webseiten, Kategorie in Katalog, usw.) zeigen. Brotkrumennavigationen sollen die Orientierung innerhalb tief verzweigter Elementbäume (etwa Websites, Dateisystem, Katalogen usw.) verbessern, indem sie Links zu vorher besuchten, übergeordneten oder themenverwandten Elementen anbieten.
Danke,
sowas hab ich schon gesucht. Da ich meinen Blog mit meienr Website grafisch sowie thematisch verbinde, muss ich da noch vorher was einfügen.
Ich werd dann das ganze so aufbauen:
Startseite -> Blog -> Kategorie -> Thrad
[...] http://blog.pixeldreher.net/allgemein/wordpress-breadcrumb-ohne-plugin [...]
Servus André!
Ich fänd es noch interessant den aktuellen Seitentitel / Beitragstitel mit zu verlinken – ne Idee wie man das bewerkstelligen könnte?
Grüße
Florian
Ich überlege mir mal was, jedoch frage ich mich wo du dahin linken willst!? Schließlich bist du bereits auf der Seite zu der du intern “verlinken” willst.
Wieso erneut den Titel verlinken? Optimierung der internen Verlinkung, ich schwöre drauf
Wär toll wenn du ne Lösung findest.
Da würde ich dann vielleicht komplett auf diese Breadcrumb Variante verzichten und einfach mit den WordPress Template Tags arbeiten. Da kannst du dann ganz individuell verlinken.
Ich finde den Lösungsansatz recht gut, jedoch nur den Home-Link und den aktuellen Seitentitel anzuzeigen reicht bei mehreren Seitenebenen nicht aus. Ich habe eine weitere Möglichkeit gefunden, wie dies bewerkstelligt werden kann: http://chrispoole.com/breadcrumbs. Aber auch diese Funktion ist noch Veränderungswürdig.
Naja, man könnte hier ja notfalls bis auf x Ebenen runter gehen und das ganze jeweils abfragen und bei Bedarf ausgeben. Nur wäre dies dann meiner Meinung nach etwas übertrieben für eine Breadcrumb.
Aber vielen Dank für deinen Tipp – ich werde mir dieses Plugin einmal ansehen.
WOW, danke danach habe ich ewig gesucht. Vielen Dank für den kleinen aber sehr nützlichen Code.
Sehr gut! Genau das hatte ich gerade gesucht und schön, dass es so einfach geht!
Vielen Dank dafür!
So hab es nun eine ganze Weile getestet und auf vielen Seiten eingesetzt und es funktioniert super. Kann mich nur noch einmal bedanken
Manchmal sind so Kleinigkeiten eben viel Wert
Also ich weiß ja nicht, aber ich hab noch keinen Code gesehen, der wirklich funktioniert. Kann auch an meinem merkwürdigen Site-Aufbau liegen (komme von Drupal, WP ist neuland für mich), aber bisher hat kein Code-Snippet dazu geführt dass es wirklich Page1 >> Sub2 >> Subsub3 hieß, sondern immer nur Page1 >> Subsub3.
Die entsprechenden Seiten sind natürlich Unterseiten der jeweiligen Parent-Site, aber trotzdem kommt da nie das richtige Ergebnis raus, im Gegenteil, auf der Home Page sagt mir die Breadcrumb zeitweise ich sei sonstwo. Mach ich irgendwas falsch, was man so spontan erkennen kann?
tolles codeschnipselchen, danke!
Hi,
du schreibst in deinem Text von der function.php, damit hat es bei mir net geklappt, muss es nicht functions.php heißen?
Damit ging es bei mir.
gruß
danza
Danke für den Hinweis! Ich habe es gleich im Artikel geändert
Danke für den Hinweis auf die Breadcrumb-Navigation. Das Posting ist zwar schon fast 2 Jahre alt, ich hab aber noch einen Verbesserungsvorschlag, damit es auch mit Unterseiten einwandfrei funktioniert (Startseite >> stat. Seite >> stat. Unterseite >> usw.). Der Bereich “elseif (is_page())” muss durch folgendes ersetzt werden (getestet mit WP 3.2):
} elseif (is_page()) {
$ancestors = get_ancestors( get_the_ID(), ‘page’ ) ;
$i = count( $ancestors ) ;
while ( $i > 0 ) {
$page_data = get_page( $ancestors[$i-1] ) ;
echo ‘ ID ).’”>’.$page_data->post_title.’ » ‘ ;
$i– ;
}
echo the_title();
}
Klappt nicht, in meinem Kommentar wurde das a-Tag direkt in einen Link umgewandelt. Neuer Versuch:
} elseif (is_page()) {
$ancestors = get_ancestors( get_the_ID(), 'page' ) ;
$i = count( $ancestors ) ;
while ( $i > 0 ) {
$page_data = get_page( $ancestors[$i-1] ) ;
echo ' <a href="'.get_permalink( $page_data->ID ).'">'.$page_data->post_title.'</a> » ' ;
$i-- ;
}
echo the_title();
}
Hallo Parapixel,
ich prüfe das mal und gebe hier ein Feedback dazu ab
Viele Grüße und danke für deine Mitarbeit,
André
Wie wäre diese Variante mit dem Menu_Walker?
class Breadcrumb_Walker extends Walker_Nav_Menu {
function start_lvl(&$output, $depth) {
//$output = “”;
}
function end_lvl(&$output, $depth) {
}
function start_el(&$output, $item, $depth, $args) {
if ( in_array(“current-page-ancestor”, $item->classes) || in_array(“current-menu-item”, $item->classes)) {
if ( $output != “” ) $output .= ” » “;
$output .= “url\”>$item->title“;
}
}
function end_el(&$output, $item, $depth) {
}
}
function the_breadcrumb() {
$walk = new Breadcrumb_Walker();
wp_nav_menu(array(‘theme_location’ => ‘primary’,
“menu_class” => “breadcrumb”,
“container_class” => “breadcrumb-container”,
‘items_wrap’ => ‘%3$s ‘,
‘container’ => ”,
“container_id” => “breadcrumb”,
“menu_class” => “breadcrumb”,
“walker” =>$walk));
echo ‘ ’;
}
hm, so ganz alles ist nicht angekommen…
hier nochmal auf pastebin:
http://pastebin.com/ubUXSa0j
Hey Christian,
danke für deinen Code! Ich teste das mal aus