Wie versteckt man in WordPress die Inhalte einer Kategorie?

Gepostet am 23. August 2007 in Weblogsoftware | 11 Kommentare

Im WordPress Forum gab’s diese Frage schon öfter und ich hatte auch bei einem Projekt das Bedürfnis die Inhalte einer bestimmten Kategorie nicht anzeigen zu lassen, z.B. weil man sie auf eine extra Seite auslagern möchte. Das geht alles relativ einfach, wenn man sich der entsprechenden template_tags bedient.

Als erstes sollte man feststellen, wo man seine Inhalte ausschließen möchte und dann die entsprechende template datei öffnen.

  • Startseite: index.php
  • Einzelartikel: single.php
  • Archive (Monat, Tag, Autor, …): archive.php
  • Suche: search.php

Dort such man sich die sog. WordPress Loop, die dürfte in etwa so aussehen, wie der folgende Block ohne die farbigen Zeilen.
Möchte man jetzt z.B. die Beiträge mit der Kategorie mit der ID 4 von der Anzeige komplett ausschließen, dann fügt man die roten Zeilen ein, möchte man nur, dass die Inhalte der Beiträge, die Überschrift und die Beitragsinfos schon angezeigt werden, dann fügt man die blauen Zeilen ein.

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

<?php if ( !in_category('4')) { ?>

<h3  id="post-<?php the_ID(); ?>" ><a href="<?php the_permalink(); ?>" rel="bookmark" title="Permanent Link zu '<?php the_title(); ?>'"><?php the_title(); ?>
 </a></h3>

<?php if ( !in_category('4')) { ?>
<?php the_content(); } ?>
<?php } ?>

<?php the_time('l,') ?> den <?php the_time('j. F Y') ?><strong>|</strong> Kategorie <?php the_category(', ') ?> <strong>|</strong> <?php comments_popup_link('0 Kommentar &#187;', '1 Kommentar &#187;', '% Kommentare &#187;'); ?> <?php edit_post_link('Bearbeiten','<strong>|</strong> ',''); ?>

<?php } ?>

<?php endwhile; ?>

Natürlich sind die Inhalte nachwievor über die RSS-Feeds von aussen sichtbar, aber auch da gibt es eine Lösung, wie ich beim nächsten Mal zeigen werde.

11 Kommentare

  1. Dann wird leider immer ein Post weniger angezeigt als im Backend notiert, was ziemlich nervig ist. Wenn man an anderer Stelle die ausgeblendete Kategorie zum Beispiel als Kurznachrichten ausgibt, und die letzten drei Nachrichten Kurznachrichten sind, werden von zuvor eingestellten 5 Posts im Hauptloop leider drei ausgeblendet und erst auf der nächsten Seite angezeigt.

  2. Hast Du nur die blauen oder nur die roten Zeilen eingefügt?
    Bei mir hat das so einwandfrei geklappt.

  3. Hallo Martin,

    vielen Dank für die Anleitung.
    machst Du die Anleitung für die RSS-Feeds noch???

  4. Hallo Detlef,

    ich komm momentan nicht dazu, aber um es kurz zu machen:
    Du mußt folgende Dateien im wp-includes Dir ansehen:
    feed-atom.php, feed-rdf.php, feed-rss.php und feed-rss2.php. Ob Dir die Kommentarfeeds wichtig sind, mußt Du selbst entscheiden.
    In diesen Dateien findest Du genauso wie oben die sog. wordpress-loop, die mit:
    < ?php while (have_posts()): the_post(); ?>
    beginnt.
    Dann kannst genauso wie oben beschrieben die Änderungen durchführen.
    Ich hoffe, das hilft Dir erstmal weiter.
    lg
    Martin

  5. Super, vielen Dank

  6. Noch einfacher geht es mit dem Plugin “Advanced Category Excluder”, wie ich grade herausgefunden habe: http://jars.de/blog/kategorien-in-wordpress-ausschliessen
    Funktioniert super.

  7. Hi. Danke für die Erklärung. Habe es auf meine Widgets angewendet und es funktioniert einwandfrei.

  8. ich habe auch das Problem, dass die Kategorien trotzdem noch im rss feeder sind, weisst du wie man dies abstellen könnte?

  9. @Reik: Manche Feedreader behalten die Inhalte, die sie einmal aggregiert haben, so dass Du evtl. so gar nicht erkennen kannst, ob sie nicht mehr vorhanden sind.
    Ansonsten könnte es noch daran liegen, dass Du genau in der Datei für den Feed den Du abfrägst die Änderungen nicht durchgeführt hast.
    Oder Du nimmst am Besten gleich das Category Excluder Plugin, dann brauchst Du auch keine Coredateien ändern.

  10. danke für den beitrag.
    ich möchte nicht die inhalte einer kategorie ausschließen, sondern nur den kategorie-link in der sidebar unsichbar machen.
    hast du dafür auch eine idee?

    mit bloggigen grüßen
    jwqlb

  11. Nutzt Du widgets?
    Wenn nein, dann schau Dir mal den Aufruf in der Sidebar für die Kategorienanzeige an. Der sollte heissen wp_list_categories und eine Erklärung dazu gibt es hier. Mit “exclude” kannst du dann Kategorien ausschliessen. Die notwendige Nummer dazu findest du im Adminbereich, wenn Du Dir den Link für die einzelne Kategorie zum bearbeiten ansiehst.
    Es gäbe diverse Plugins, um diese Funktion auch in ein Widget zu bekommen, aber ich würde ein PHP Widget plugin nutzen und dann den obigen Aufruf dort reinpacken.

Kommentar absenden

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>