Bewertete Artikel in der Sidebar ausgeben


Der Artikel besteht aus 662 Wörtern. Geschätzte Lesezeit: 02:38 Minuten

wordpress-Bildschirm

Nachdem ich heute nachmittag den Artikel hinsichtlich der Ausgabe der Bewertungen eines Artikels in der Suchmaschine von google veröffentlicht habe, wollte ich noch ein bisschen weiter gehen. Und zwar habe ich mir gedacht, das es doch - synchron zu der Ausgabe der zuletzt aktualisierten Artikel - eine Möglichkeit geben müsste, die zuletzt bewerteten Artikel in der Sidebar anzeigen zu lassen.

Ich schnappte mir also den Codeschnippsel für die zuletzt Aktualisierten Artikel und fing an ihn entsprechend umzubauen.

Das es für mich als php-Noob nicht gerade die leichteste Übung war, brauche ich glaube ich nicht extra zu erwähnen. Denn WP PostRatings hatte eine besondere Schwierigkeit für mich bereitstehen. Es stellte sich nämlich heraus, das das Plugin das Datum der Bewertungen als UNIX-Timestamp in die Datenbank schreibt.

Also hieß es, die SuMa quälen bis sie heiß läuft. Schließlich will ich als Ausgabe ja '30. März 2012, um 20:53 h' haben, und nicht '1333140836'. Denn wer weiß schon, das das in der für uns lesbaren Version das erwähnte Datum ist? Ich nicht 😉

Nach mehren dutzend Versuchen kann ich den interessierten unter Euch jetzt den Codeschnippsel präsentieren, der diese Ausgabe ermöglicht:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function abgestimmt() {
global $wpdb;
  $upd_query = "SELECT FROM_UNIXTIME(rating_timestamp,'%d.%m.%Y um %H:%i:%s') AS ratingtime_ger, rating_id, rating_postid AS postid, rating_posttitle AS posttitle, rating_rating AS rating FROM $wpdb->ratings
   ORDER BY rating_timestamp DESC
   LIMIT 3";
$upd_result = $wpdb->get_results($upd_query);
  if ( empty($upd_result) ) {
echo '<small>... keine aktualisierten Artikel</small>';
  }
  foreach ($upd_result as $updat) :
   $postid = $updat->postid;
   $posttitle = $updat->posttitle;
   $rating = $updat->rating;
   $ratingtime_ger = $updat->ratingtime_ger;
  echo '<ol>;';
  echo '<li style="list-style-type:none"><div><a href="<a href="https://themenfreund.de/'.$updat->posttitle.'">https://themenfreund.de/'.$updat->posttitle.'</a>" title="'.$updat->posttitle.'">'.$updat->posttitle.'</a></div><h6>Zuletzt am: '.$updat->ratingtime_ger.' mit '.$updat->rating.' Sternen</h6></li>';
  echo '</ol>';
  endforeach; 
}

Nachfolgend versuche ich, das Ganze mal ein wenig auseinander zu dröseln.
Zeile 1: Bennung der Funktion
Zeile 2: Die angesprochenen Variablen finden sich in der globalen WordPress-DB
Zeile 3: Die Abfrage der benötigten Variablen und zwar aus der WordPress-DB-Tabelle ratings

Und in dieser Zeile wird auch das Problem gelöst, welches ich eben angesprochen habe: Die Umwandlung desUNIX-Timestamps in die für den Menschen lesbare Version Datum und Uhrzeit.

Mit SELECT FROM_UNIXTIME wird dem Server mitgeteilt, das eine Umwandlung des Timestamps, wie er in der Datenbanktabelle steht, vorgenommen werden soll. Nach der öffnenden Klammer wird dem Server erst einmal gesagt, welches Spalte der Datenbanktabelle hier umgewandelt werden soll, und mit dem Code nach dem Komma wird ihm gesagt, wie die Ausgabe auszusehen hat!
Zeile 4: Die Sortierung ist in Absteigender Reihenfolge vorzunehmen. Basis dafür ist die Datenbankspalte rating_timestamp der Tabelle ratings
Zeile 5: Maximal 3 Artikel sollen ausgegeben werden
Zeile 6: übergabe der Ergebnisse aus der Abfrage in die Variable updat_result
Zeile 7: Ist die Abfrage leer (es liegt bisher keine Bewertung vor), Text aus Zeile 8 ausgeben
Zeile 8: Ausgabetext, wenn bisher keine Bewertung erfolgt ist
Zeile 9: Abschluß der Schleife im Falle einer negativen / leeren Abfrage
Zeile 10: Wenn Abfrage nicht leer, dann
Zeile 11 - 14 übergabe der gefüllten Variablen in neue Variablen
Zeile 15: Ausgabe in geordneter Liste
Zeile 16: Festlegung, wie die Ausgabe aussehen soll
Zeile 17: Geordnete Liste schließen
Zeile 18: Ende der Schleife
Zeile 19: Schließen der Funktion

Nun haben wir also die Abfrage möglicher, bewerteter Artikel. Nur wir wollen sie ja auch ausgeben lassen. Dafür ist der folgende Code-Schnippsel zuständig, den man dann z. B. in die sidebar.php packt!

1
2
3
<?php if (function_exists('abgestimmt'));?>
		<h3 class="sidebar-title">Zuletzt bewertete Artikel:</h3>
		<?php echo abgestimmt(); ?>

Zeile 1: Prüfen, ob die Funktion mit dem Namen auch überhaupt existiert.
Zeile 2: Wenn das der Fall ist Ausgabe der Überschrift
Zeile 3: Ausgabe der in den Variablen der Funktion enthaltenen Werte wie in der Funktion selbst festgelegt.

Und wie das ganze dann letztendlich ausschaut, könnt ihr rechts in der Sidebar unterhalb der zuletzt aktualisierten Artikel sehen!

Ich hoffe, das auch mit diesem Artikel der eine oder andere von Euch was sinnvolles anfangen kann, und würde mich über entsprechende Rückmeldungen freuen!

Marcus
Über Marcus 702 Artikel
Ich freue mich über Deinen Besuch auf meinem Blog! Wenn Dir der Artikel gefallen hat, teile ihn doch mit anderen und hinterlasse Deine Meinung. Mehr über mich gibt es hier zu lesen

Kommentar hinterlassen

E-Mail Adresse wird nicht veröffentlicht.


*


CommentLuv - verlinke einen deiner Blog-Artikel