Zufälligen Artikel der älter ist als x Tage anzeigen

| 5 Kommentare

Zuletzt geändert oder ergänzt wurde er am: Sonntag, 25.03.2012

Anmerkung:

Der Code, so wie er hier steht, ist leider fehlerhaft. Ich habe die Funktion daher wieder entfernt.

Ich wollte gerne auf meiner Eingangsseite des Blogs einen Artikel anzeigen, der zufällig ausgewählt wird. Das wäre ja aufgrund vorhandener Snippets im Netz auch selbst für mich - der nur Ansatzweise programmieren kann - kein Problem gewesen.

Der angezeigte Artikel sollte aber noch eine ander Bedingung erfüllen. Und das hinzubekommen, hat mich fast kirre gemacht. Denn er sollte auch älter als 60 Tage sein.

Als Alleinstellungsmerkmal wäre auch das kein Problem gewesen. Aber die Kombination aus beidem war echt nicht leicht zu knacken. Aber Dank der Jungs vom deutschen Wordpress-Forum und meiner Sturheit, hats dann doch geklappt.

Um Beiträge auszuwählen, die Älter als 60 Tage sind, steht bei mir in der Functions.php nun folgender Code:

function filter_where( $where = '' ) {

	// only older (<) as 60 days

        $where .= " AND post_date < '" . date('Y-m-d', strtotime('-60 days')) . "'";

    return $where;

}

add_filter( 'posts_where', 'filter_where' ); 1

Hier werden also in der where-Zeile die Posts gesucht, deren Datum kleiner ist als heute - 60 Tage.

In der index.php steht nun folgender Code-Block:

<?php if (function_exists('filter_where')) { filter_where(); } ?>	<?php query_posts(array('orderby' => 'rand', 'showposts' => 1));		if (have_posts()) : while (have_posts()) : the_post();  ?>		<h3>           <a href="<?php the_permalink() ?>"><?php the_title(); ?></a>		</h3>		<div class="date-comments">            <p class="fl"><span class="comments"><?php comments_popup_link('Kommentar schreiben', '1 Kommentar', '% Kommentare'); ?></span><?php edit_post_link('Artikel bearbeiten!', ' | ', ''); ?></p>            <p class="fr"><?php the_category(', ') ?></p>        </div>		<?php the_excerpt(); ?><span class="continue"><a title="<?php the_title(); ?>" href="<?php the_permalink() ?>">den vollst&amp;auml;ndigen Artikel lesen…</a></span>        geschrieben am <?php the_time('l'); ?>, den <?php the_time('d.m.Y'); ?> um <?php the_time('H:i'); ?> h    <?php endwhile; ?>	<?php endif; ?><?php remove_filter('posts_where', 'filter_where'); ?>

Die Fachkundingen unter Euch wissen ja sicher, was da passiert. Allen anderen versuche ich es mal mit meinen Worten zu erklären.

In der ersten Zeile wird geguckt, ob die function filter_where auch extistiert. Die zweite Zeile mit sorgt mit orderby rand für den Zufallsfaktor, und mit showpost für die Anzahl der gewünschten Artikel. Hier ist es einer.

Der Block ab dem h3 bis zum ersten schließenden div gibt den Link und den Titel aus. Es folgt dann der Textlink um zur Kommentar-Funktion wechseln zu können. Darüber hinaus wird dann noch die Kategorie des Artikels angezeigt.

Dann wird mit the_excerpt der Text ausgegeben, den ihr beim schreiben des Artikels im Feld 'Auszug' eingegeben habt. 'Continue' sorgt dafür, das der Link zum weiterlesen ausgegeben wird.

Der Rest in der Zeile hinter dem Text 'geschrieben am' gibt mit the_time('l') den Wochentag aus. Dem folgt mit the_time('d.m.y') das Datum und mit the_time('H:i') die Uhrzeit.

endwhile und endif schließen die jeweiligen Schleifen.

Zur Verzweiflung getrieben hat mich, das ein query im Normalfall eigentlich mit reset_query abgeschlossen wird.

Das sorgte bei mir allerdings dafür, das zwar der erste Artikel zufällig ausgewählt wurde, aber auch die restlichen der anzuzeigenden Artikel die Forderung erfüllten, die der zufällige Artikel erfüllen sollte: Sie waren älter als die x Tage.

Erst das entfernen des post_where-Filters und des filter_where sorgte dann dafür, das unter dem zufälligen Artikel wieder die in den letzten Tagen veröffentlichten Posts erschienen.

Falls ich hier etwas falsch erklärt haben sollte, teilt mir das ruhig mit. Ich werde das dann umgehend ergänzen bzw. ändern.

Für diejenigen, die nach einer solchen Möglichkeit gesucht haben, das ohne Plugin hinzubekommen, hoffe ich, das sie die Funktion auch bei sich selbst erfolgreich einsetzen können.

Anmerkung:

So wie der Code hier zu lesen ist, ist er noch fehlerhaft. Es werden keine aktuellen Artikel mehr angezeigt, und die Anzahl der Seiten schnellt nach oben. 

Ähnliche Artikel
Im Dezember habe ich eine Funktion in diesen Blog eingebaut, die es ermöglicht, auf hinzuweisen. Gefunden hatte ich den entsprechenden im Blog von . Was mich aber eigentlich schon kurz ...
Weiterlesen
Wer im Internet nach Informationen sucht, guckt nicht zwangsläufig als erstes darauf, wann ein Artikel - der die gesuchten Informationen enthält - geschrieben wurde. So kann es natürlich passieren, das, wenn man ...
Weiterlesen
Ich wühle mich ja so Tag täglich durchs , um zu schauen, was gibt es bei / für das meinen (noch) besser machen könnte. Dabei bin ich auf die ...
Weiterlesen
Hinweis auf erscheinende Artikel
Genaueres Alter eines Artikels
Vorschau auf geplante Artikel

Autor: Marcus

Ich freue mich über Deinen Besuch auf meinem Blog! Wenn Dir der Artikel gefallen hat, teile ihn doch mit anderen und hinterlasse Deine Meinung oder kontakte mich per EMail!