verschiedene Links je Kategorie die Sidebar in WP

Die Sidebar in WP kann sehr individuell gestaltet werden. Template Tags zb wp_list_bookmarks und die if Abfrage via PHP, Linkkategorien, und die Kategorien liefern dazu das Werkzeug.

Ich wollte bei einem meiner Blogs, dass beim Aufruf einer Kategorie jeweils andere Links angezeigt werden. Ebenso soll bei gewissen statischen Seiten ganz eigene Links in der Sidebar erscheinen, und sogar bei einzelnen Artikel kann man so völlig unterschiedliche Link-Hinweise geben.

Erstens, weil ich elendslange Linklisten nicht mag, zweitens, weil ich die themenrelevanten Links bei der jeweiligen Kategorie,Seite, Artikel hervorheben mag und Drittens, weil ich einfach wissen wollte wie dies geht.

Im Dezember 2007 wurde dieser Artikel erneuert, weil get links nicht mehr verwendet werden sollte und ich nun all diese Neuerungen mit eingebaut habe.

»» War der Artikel für Dich hilfreich freue ich mich über einen Link oder einen Bookmark bei Mr.Wong, Yigg.de usw… ;)

Widgets verwenden und individuelle Linkkategorien ist möglich. Wie erkläre ich ganz am Ende des Artikels.

Die Blog Kategorien heißen:

  1. Bloggen
  2. Privat
  3. Galerie

bei der statischen Seite *About* sollen eigene Links erscheinen und beim Artikel mit dem Title *danke* ebenso. ;)

Die Linkkategorien erstellen, benennen und die IDs merken

Im Admincenter==>Linka ==>Link Kategorien

Dort findet man bereits Kategorien, die so heißen wie die Kategorien des Blogs.

Man kann dort auch neue Linkkategorien erstellen.

Für die statische Seite *About* nannte ich die Linkkategorie ebenfalls *About*, für den einzelnen Artikel, erstellte ich die Linkkategorie *Danke*.

Es ist für den Durch und überblick sehr sinnvoll Linkkategorien absolut unverwechselbar und wiedererkennbar zu benennen. Nenn ich die Linkkategorie für die Seite *About* Freunde, weiß ich nach einem Monat nicht mehr wo diese Kategorie denn erscheint.

Da man ja jeder Linkkategorie eine eigene überschrift geben kann, ist dies so viel besser.

den Namen der Linkkategorie und die dazugehörige ID notieren

  1. Bloggen == Linkkategorie ID 3
  2. Privat == Linkkategorie ID 4
  3. Galerie == Linkkategorie ID 5
  4. About==>Linkategorie= ID 9
  5. Danke==>Linkkategorie =ID 10

» Benutzer von Widget bitte nach unten scrollen!

Jetzt öffnete ich die sidebar.php mit einem Editor meiner Wahl, richtete mir die verschachtelte Liste so her, damit sie immer richtiges html anzeigt, egal was ich damit mache und außerdem löschte ich den template tag

<?php wp_list_bookmarks(); ?>

Wenn …dann …

<?php /* wenn das  bloggen ist */ if ( is_category('bloggen')) { ?>
<ul><li><h2>zum Thema</h2></li>
<?php wp_list_bookmarks('category=3&categorize=0&show_description=&title_before=&title_after&title_li=&category_before=&category_after='); ?>
 
</ul>
<?php } ?>

Einzeln erklärt:

<?php

Damit weiß PHP: ich muss was tun.

/*wenn das bloggen ist*/

Dies ist ein Kommentar für PHP. Solche Kommentare sind ebenfalls für den überblick absolut nötig. Monate später, weiß man sonst garantiert nicht mehr was man denn wollte, wenn der Kommentar fehlt.

if(is_category('bloggen'))

Dies heißt ausgesprochen:
Wenn ist Kategorie Bloggen. [;)]

{ ?>

PHP mach mal kurz Pause.;)

<ul><li><h2>zum Thema</h2></li>
<?php wp_list_bookmarks('category=3&categorize=0&show_description=&title_before=&title_after&title_li=&category_before=&category_after='); ?>
</ul>

zeige Linkkategorie mit der ID3, zeige die Links einfach zwischen li und /li ohne den Namen der Linkkategorie.

<?php } ?>

PHP Deine Arbeit ist getan.

Diese if-Anweisung wiederholte ich für jede einzelne meiner Blog Kategorien.

<?php /* wenn das  privat ist */ if ( is_category('privat')) { ?>
<ul><li><h2>zum Thema</h2></li>
<?php wp_list_bookmarks('category=4&categorize=0&show_description=&title_before=&title_after&title_li=&category_before=&category_after='); ?></ul>
<?php } ?>

und

<?php /* wenn das  galerie ist */ if ( is_category('galerie')) { ?>
<ul><li><h2>zum Thema</h2></li>
<?php wp_list_bookmarks('category=5&categorize=0&show_description=&title_before=&title_after&title_li=&category_before=&category_after='); ?>
</ul>
<?php } ?>

Für die statische Seite about sieht dies so aus.

<?php /* wenn page about */ if ( is_page('about')) { ?>
<ul><li><h2>zum Thema</h2></li>
<?php wp_list_bookmarks('category=9&categorize=0&show_description=&title_before=&title_after&title_li=&category_before=&category_after='); ?>
</ul>
<?php } ?>

Für den Artikel mit dem Titel Danke so:

<?php /* wenn single danke */ if ( is_single('danke')) { ?>
<ul><li><h2>zum Thema</h2></li>
<?php wp_list_bookmarks('category=9&categorize=0&show_description=&title_before=&title_after&title_li=&category_before=&category_after='); ?>
</ul>
<?php } ?>

Achtung: Die Codeteile bitte nicht einfach kopieren, sondern selber tippen. Beim Kopieren entstehen manchmal Fehler.

Fertig!

Widgets verwenden und dennoch ganz spezielle Links je Sidebar ist auch ohne Plugin möglich.

Allerdings erscheinen die Linkkategorien dann am Ende der Sidebar. Nicht einfach irgendwo mittendrin.

Vorbereitung: Wenn die Blogroll mit Widgets angezeigt wurde, dies aus den Widgets entfernen.

Im default Theme /Kubrick von WordPress steht ganz unten in der Sidebar.php folgendes

<?php endif; ?>
		</ul>
	</div>

das endif beendet die Widgetfunktionstüchtigkeit. Das /ul beendet die verschachtelte Liste.

Das /div beendet die “Schachtel” Sidebar. ;)

Wenn Du jetzt nach dem letzten /ul und vor dem /div obige Codebeispiele einträgst, kannst Du Widgets UND individuelle Linkkategorien je Kategorie, je statische Seite, je Artikel verwenden.

Sollte Deine Sidebar ein wenig anders aussehen, dann auf alle Fälle nach dem *endif*.

Alles vor dem endif wird bei der Verwendung von Widgets nicht angezeigt!

So einfach ist es die Sidebar des Blogs aufzuräumen. ;) Gerne beantworte ich Fragen zum Thema.

»» War der Artikel für Dich hilfreich freue ich mich über einen Link oder einen Bookmark bei Mr.Wong, Yigg.de usw… ;)

Artikelhistorie

Erstveröffentlichung am 23. Dezember 2005

den Originaltext gelöscht der 1. Veröffentlichung, weil er absolut nicht mehr verwendet werden sollte.

… if is kaffehaus get texto kaffee, steht jetzt am Programm . Kaffeetrinkender Smilie
20 Kommentare zu: "verschiedene Links je Kategorie die Sidebar in WP"
  1. Zu der Sidebar hätte ich mal eine Frage. Und zwar würde ich gerne wissen wie ich es hin bekomme, dass ich zwei Sidebars habe also jeweils rechts und links eine.
    LG
    Biene

    Sabine30.05.06 18:17 | # |

  2. Hi Sabine
    ich habe so gar keine Ahnung was Deine Ausgangslage ist,
    Dreispaltiges Theme

    Sieh es Dir an, Farben, etc. ist ja alles änderbar und das Grundgerüst ist dreispaltig,
    vielleicht hilft Dir dies weiter.

    lg

    texto31.05.06 23:05 | # |

  3. Also das hab ich jetzt hin bekomme. Hatte einfach nich begriffen das die css die Darstellung vor gibt *schäm* Okay, nun hätte ich da noch ne Frage. Ich hab das jetzt hin bekomme und im Opera sieht es auch total klasse aus, aber im IE wird die linke Sidebar und der Content nach links verschoben. Was genau mag der nich, hab schon ganz Google verrückt gemacht, finde aber leider nichts passendes.
    LG
    Biene

    Biene01.06.06 22:11 | # |

  4. Hallo Biene

    such Dir hier ein Layout aus, das Du magst

    es gibt solche, die so aussehen wie das Deine und halte Dich an die Angaben,
    dann kann das nicht mehr so schnell passieren,
    nur pass auf, total pixel genau gehts im Internet nicht ab, weil es den IE gibt ;)

    LayoutGala

    viel Glück und Freud
    lg

    texto02.06.06 16:23 | # |

  5. Danke schön, das ist ja ein toller Link. Dann werde ich es damit einmal versuchen.
    Das Blog hier ist toll, hier habe ich schon sehr viel Hilfe gefunden.
    LG
    Biene

    Biene02.06.06 21:06 | # |

  6. Hatte mir schon die ganze Zeit gedacht, wie ich in meinen “categorien” einzelne Links einbauen kann.. Was ich dir jetzt sagen kann ist, Danke es hat nach deiner “SUPER” php anleitung sofort geklappt.

    Achso ich fand das auch ganz lustig: Zitat: PHP mach mal kurz Pause.;)

    Ernst08.03.07 15:17 | # |

  7. Hallo Biene,

    zunächst ein dickes Lob: Das ist die coolste Tutorialseite zum Thema WordPress, die ich kenne! Die Seite hat mich ziemlich nach vorn gebracht bei den ersten (und auch den fortgeschritteneren) Schritten in WordPress!

    Zwei Anliegen habe ich jedoch

    1. ein potenzieller Verschachtelungsfehler ist mir aufgefallen beim obigen Artikel (ich hoffe mal, der Quellcode wird jetzt korrekt wiedergegeben…):

    In Deiner Ausführung steht
    zum Thema
    ‘, ”, ”, TRUE, ‘url’, FALSE); ?>

    Schaut man jedoch genauer in den 2.2er-Quellcode, müßte die Verschachtelung m.M. nach folgendermaßen aussehen:
    zum Thema
    ‘, ”, ”, TRUE, ‘url’, FALSE); ?>

    Vielleicht eine Variation, die mit einer neuen Version rauskam, aber nach der Struktur scheinen die verschiedenen Abschnitte in der D-2.2.1 aufgebaut zu sein.

    2. eine Frage: Die o.g. Lösung klappt super für die jeweilige Kategorienstartseite sowie in der Variation mit is_page auch für statische Seiten. Blöderweise übernimmt WordPress dies jedoch nicht für die einzelnen Artikel in den Kategorien – ruft man einen einzelnen Artikel auf, werden die kategorienspezifischen Link-Abschnitte nicht mit angezeigt.

    Weißt Du dazu auch eine Lösung, wie die kategorienspezifischen Linkabschnitte auch auf die Artikel in den Kategorien übernommen werden können?

    Viele Grüße,

    Stefan

    Stefan27.07.07 13:17 | # |

  8. Hi Stefan ja;)
    dazu braucht man in category, das funktioniert aber nur innerhalb des Loops so muss man *tricksen*

    Die Beispielkategorie hat die ID3 und die Linkkategorie hat die ID 5
    für das HTML braucht man vorher ein ul und nacher ein /ul, so dachte ich es mir aus ;)

    <?php
     $post = $wp_query->post;
     if ( in_category('3') ) {
    echo '<ul>';
     wp_list_bookmarks('category=9&categorize=0&show_description=&title_before=&title_after&title_li=&category_before=&category_after=');  
     echo '</ul>';
     }
     ?>

    Bloß für eine *Biene* bin ich zu alt, das mag ich nicht so unbedingt.

    lg

    /edit:wp list bookmarks editiert, das alte get links gibt es nicht mehr

    texto27.07.07 15:11 | # |

  9. nix für ungut, aber schön is was anderes ;-) du mußt so jede kategorie händisch ausprogrammieren. wünsche dir, dass du keine 50 kategorien hast. wenn du mal eine kat einfügen willst ist das gleich programmierabreit… Ich hätte da eine dynamische lösung:

    if(is_category()){
       $cat=single_cat_title("",FALSE);
       wp_list_bookmarks('category=2&amp;category_***'.$cat);
    }

    scheint mir doch einfacher…

    lg

    gnarf01.12.07 08:50 | # |

  10. gnarf

    ich habe bei einer Domain an die 70 Linkkategorien und nur 5 Kategorien,

    zig Linkkategorien werden auch aufgerufen, wenn es ein bestimmter Beitrag ist oder eine statische Seite

    manchmal werden Linkkategorien untereinander gemischt

    wie dynamisierst Du dies ;)

    dein Code kann nur funktionieren, wenn man ein neues Blog aufsetzt und Linkkategorien gleichzeitig Kategorien auch sind, was nicht sein muss aber kann,

    als der Beitrag das erste Mal geschrieben wurde, waren Linkkategorien und Kategorien absolut getrennt

    lg

    texto01.12.07 15:56 | # |

  11. super, mein erster kommentar in einem blog überhaupt und schon werd ich schonungslos als wordpress neuling aufgedeckt ;-) ich bin nämlich ein solcher und setze grad mein erstes wordpress theme zusammen. bis vor ca 1 stunde wusste ich nicht mal dass es einen unterschied zw. linkkategorien und kategorien gibt °hmmm°. aber schön langsam durchschaue ich das ein wenig….

    also macht es eigentlich sinn die kategorien gleich von anfang an parallel zu führen (= selbe namen), dann funktionierts. naja wohl eine frage die mir erst die praxis mal beantworten wird.

    sehe ich das richtig, dass du also bei anklicken einer beitragskategorie einfach alle linkkategorien einblenden läßt, die du dazu in der sidebar haben willst. dazu ist deine vermutlich wirklich die einfachste lösung.

    mannomann ob ich das wordpress je durchschauen werde….

    gnarf02.12.07 16:23 | # |

  12. gnarf du musst nicht zweimal dieselben Namen nehmen, nicht bei der WP Vesion 2.3.1 , aber Du kannst dir noch zusätzlich jede Menge an Linkkategorien erstellen (Admincenter==>BLogroll) denn dann hast du jede Menge Freiheit und ja so mache ich das;)

    je nach Kategorie, ja selbst manchmal je nach einzelnem Artikel, statische Seite habe ich oft andre Linkkategorien,

    wobei es sehr hilfreich ist alles zu kommentieren, sonst weiß man morgen nicht was man heute tat ;)

    und jede/r war mal Neuling,

    herzlich Willkommen hier und sieh Dich um und greif mir mit php hie und da unter die Arme ;) da bin ich oft *faul….

    lg

    texto02.12.07 19:36 | # |

  13. Lieber texto, auch von mir ein GROOOOSSES Lob und sorry, dass ich hier nach so elend langer Zeit noch nen Comment platziere… Aber GENAU DANACH hatte ich für meine Website gesucht… Werd das umgehend so einbinden….
    @gnarf: dein beispiel für dynamisches “coding” muss ich mir noch einmal in ruhe zu Gemüte führen… Steige da noch nicht ganz durch… Aber sieht vielversprechend aus! *TOP*

    Nico30.04.08 00:18 | # |

  14. vielen Dank für die guten und verständlichen Erläuterungen auch in den anderen Themen!

    meine Frage: ich habe obigen Code so angepasst, das er auf eine Kategorie sowie auf Beiträge einer Unterkategorie reagiert
    if ( in_category(’3′) || is_category (‘simson’) ) {

    was mir fehlt ist die Möglichkeit, dies auch für die Unterkategorien von simson zu machen, ohne alle einzeln zu benennen (es könnten ja noch weitere hinzukommen)

    Frank26.07.08 09:25 | # |

  15. Hi Frank
    if in category funktioniert so nur innerhalb des Loops und wird dann aktiv , wenn ein Artikel in einer Kategorie ist

    is category zeigt eben immer nur diese eine und wird aktiv, wenn man die Kategorieseite aufruft.

    Ich ersuche Dich mit Deinem Problem an das forum.wordpress-deutschland.org zu wenden, weil ich da derzeit nichts gleich parat habe ;) und einfach keine Zeit zum Nachdenken drüber,

    lg

    texto26.07.08 12:29 | # |

  16. Danke für dieses geniale Tutorial. Nach langem Suchen habe ich endlich das gefunden, was ich gesucht habe. Super easy und funktioniert wunderbar!

    Steffen04.08.08 21:19 | # |

  17. Hallo ,
    wie kann ich es anstellen , daß nur die Überschrift in der Linkliste angezeigt
    wird und wenn ich darauf klicke öffnen sich die darin enthaltenen Links.

    Gruss Torsten

    Torsten Japke13.10.09 15:40 | # |

  18. Hi Torsten
    am besten mit einem Jquery Accordion
    zb eines von vielen
    http://jquery.bassistance.de/accordion/demo/

    lg

    texto13.10.09 18:53 | # |

  19. Funktioniert immer noch einwandfrei, vielen Dank für den super Tipp. Wäre ich eher darauf gestossen, hätte ich mir 2 Stunden Kopfzerbrechen erspart.

    Marcel08.11.09 08:16 | # |

  20. Hi Marcel, um Dir zukünftiges Kopfzerbrechen wegen WP Funktionen und Hilfe zu ersparen,
    nimm Dir Texto.de einfach in den Feedreader auf ;)

    lg

    texto08.11.09 13:30 | # |

  • Name and Mail are required.