WP-PostRatings nur Sterne anzeigen ReLoaded

Auf vielen meiner Projekte setzt ich, wie auch noch 100.000+ andere User, auf das Plugin WP-PostRatings von Lester „GaMerZ“ Chan, um den Besuchern die Möglichkeit zu geben den jeweiligen Beitrag mit 1 – 5 Sternen zu bewerten. Leider hat der „Erfinder“ nicht daran gedacht einen zB Shortcode einzubinden mit dem man nur die Sterne ausgeben… … weiterlesen

WP-PostRatings nur Sterne anzeigen ReLoaded

Auf vielen meiner Projekte setzt ich, wie auch noch 100.000+ andere User, auf das Plugin WP-PostRatings von Lester „GaMerZ“ Chan, um den Besuchern die Möglichkeit zu geben den jeweiligen Beitrag mit 1 – 5 Sternen zu bewerten.

WP-PostRatings
WP-PostRatings
Entwickler: Lester 'GaMerZ' Chan
Preis: Kostenlos

Leider hat der „Erfinder“ nicht daran gedacht einen zB Shortcode einzubinden mit dem man nur die Sterne ausgeben kann. Dies ist oft ein sehr stylisches Mittel. Siehe zB die Verwendung auf meinem Foodblog guenstig-kochen.at

 

WP-PostRatings nur Sterne anzeigen ReLoaded

Ich habe also damals recheriert und eine Lösung HIER gefunden, die wie folgt aussieht und in die functions.php Deines Themes gehört

function showRating($id, $css_class = 'post-ratings') {
 global $wpdb;
 $path = plugins_url('wp-postratings/images/'.get_option('postratings_image'));
 $rating = $wpdb->get_var("SELECT AVG(rating_rating) AS rating FROM $wpdb->ratings WHERE rating_postid = $id");
 $i = 0;
 $html = '
 <span class="'.$css_class.'">';
 if (!empty($rating)) {
 while ($i < floor($rating)) {
 $html .= '
 <img src="'.$path.'/rating_on.gif" alt="" />';
 $i++;
 }
 if (round($rating, 1) == ($i+0.5)) {
 $html .= '
 <img src="'.$path.'/rating_half.gif" alt="" />';
 $i++;
 }
 }
 while ($i < 5) {
 $html .= '
 <img src="'.$path.'/rating_off.gif" alt="" />';
 $i++;
 }
 $html .= '
 </span>';
 return $html; 
}

Bis zum letzten Update (1.86.2) von Wp-PostRatings hat das Ganze auch wie geschnitten Brot funktioniert, doch dann nicht mehr. Irgendwas wurde am Code des Plugins so verändert, dass das Code-Schnippsel nur mehr leere Sterne ausgegeben hat.

Aus diesem Grunde (und weil ich auf die Ausgabe der Sterne partout nicht verzichten wollte) habe ich mich hingesetzt und das Ganze analysiert und bin zu folgendem Ergebnis gekommen, damit die Anzeige wieder läuft.

function showRating($id, $css_class = 'post-ratings') {
 global $wpdb;
 $path = plugins_url('wp-postratings/images/'.get_option('postratings_image'));
 $rating = get_post_meta(get_the_ID(), 'ratings_average', true);
 $i = 0;
 $html = '
 <span class="'.$css_class.'">';
 if (!empty($rating)) {
 while ($i < floor($rating)) {
 $html .= '
 <img src="'.$path.'/rating_on.gif" alt="" />';
 $i++;
 }
 if (round($rating, 1) == ($i+0.5)) {
 $html .= '
 <img src="'.$path.'/rating_half.gif" alt="" />';
 $i++;
 }
elseif (round($rating, 1) > ($i+0.5)) {
$html .= '
<img src="'.$path.'/rating_on.gif" alt="" />';
$i++;
		}
 }
 while ($i < 5) {
 $html .= '
 <img src="'.$path.'/rating_off.gif" alt="" />';
 $i++;
 }
 $html .= '
 </span>';
 return $html; 
}

Auf diese Art und Weise werden nun wieder die vergebenen Sterne korrekt angezeigt, die Du nur noch mit folgendem Stückchen Code zur Ausgabe bringst

<?php echo showRating(get_the_ID(), 'post-ratings'); ?>