WordPress: Artikel mit Ablaufdatum

WordPress kann viel (außer am richtigen Datum in der neuen Version zu erscheinen), einige Dinge sind aber noch nicht ganz so ausgereift, wie man es gerne hätte. Eines dieser Problemchen ist, dass Artikel kein Verfall- oder Ablaufdatum haben können, was für den Gebrauch als Blogger vielleicht uninteressant ist, für solche, die WordPress allerdings als CMS einsetzen, wichtig sein kann. Man muss da schon die Spezialfelder bemühen, um Artikel mit Ablaufdatum zu erhalten. Damit geht es dann aber ganz gut. Und hier steht, wie!

Der Code

  • Erstelle ein neues Spezialfeld mit einer passenden Bezeichnung, zB: „Ablaufdatum“ oder – in meinem Fall – ablaufdatum (jjjj-mm-tt). Ich habe mich für diese Namensgebung entscheiden, weil ich damit gleich auch die Eingabeform angebe.
  • Als Wert gibt man in dieses Spezialfeld nun das Ablaufdatum im genannten Format an, also jjjj-mm-tt: 2008-03-10 für den 10. März 2008.
  • Das war’s von Nutzerseite.

Im Theme muss natürlich nun eine Abfrage her, die den Artikel ausblendet, wenn das angegebene Datum überschritten ist, daher:

Codebeispiel für Artikel mit Ablaufdatum

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
  <?php $heute = strtotime(date("Y-m-d"));

  /* Heutiges Datum im Format Y-m-d abfragen */
  $ablaufdatum = strtotime(get_post_meta($post->ID, 'SPEZIALFELD', true));

  /* Ablaufdatum aus dem Spezialfeld "SPEZIALFELD"
     abfragen. Die Daten im Spezialfeld müssen unbedingt
     im Format Y-m-d gespeichert werden! */
  if (empty($ablaufdatum)) { $ablaufdatum = $heute + 1; };
  if ($ablaufdatum >= $heute) { ?>

    <a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
  <?php }; ?>
<?php endwhile; endif; ?>

Code bei Pastebin.

Anmerkungen

Dieser Code und diese Lösung entstanden aus der Not heraus, Artikel zeitlich begrenzt darzustellen, zB Ankündigungen, die am Tag des Ereignisses nicht mehr aktuell sind. Für Blogger wird diese Funktionalität nicht von Bedeutung sein, für solche, die WordPress allerdings als CMS einsetzen, kann das wichtig werden.

Zur Klärung: Der Code lässt den Artikel nicht verschwinden, sondern blendet ihn bei einer bestimmten Abfrage einfach nur aus. In Kategorie-, Stichwort- und datumsbasierten Auflistungen wird der „abgelaufene“ Artikel trotzdem noch auftauchen. (Ich habe das Problem insofern gelöst, als dass ich mit dem gleichen Code dem Artikel eine Zeile hinzufüge, die aussagt, dass die Informationen dieses Artikels bereits veraltet sind.)

Verbesserungen, Optimierungen, etc. sind immer in den Kommentaren willkommen.

Do NOT follow this link or you will be banned from the site!
Wo niemand klickt