fontssymbole im Widget dynamisch anzeigen

Alle, haben eine Filmkritikseite, der ich eine Punktzahl zuweisen. Momentan benutze ich ein Widget, das gut funktioniert … aber ich habe alle meine Scores auf ein 5-Sterne-Bewertungssystem (3,5 / 5, 5/5 usw.) geändert, so dass das Widget, das es verwendet, auf Prozentsätzen basiert Der Fortschrittsbalken (ein Wert von 70 würde 70% des Balkens und so weiter füllen) zeigt nur noch 3,5% dieses Balkens an.

Was ich tun möchte, ist die Sterne in der Schriftart super zu verwenden, die ich stattdessen auf meiner Seite habe.

Aber ich habe Probleme, den Widget-Code an meine neuen Bedürfnisse anzupassen.

Ich frage mich, ob ich für jeden etwas vorbringen muss oder ob es einen einfacheren Weg gibt? Was ich mit “Fall” meine, heißt (und ich sage das auf Englisch, im Gegensatz zum Code) “Wenn der Film eine Bewertung von 1/5 hat, dann zeige einen vollen Stern, gefolgt von vier leeren.” Und so weiter. Oder gibt es eine Möglichkeit, wie ich basierend auf meinen dynamisch generierten Partituren die Sterne anzeigen kann?

Mein Widget-Code ist unten, wenn das hilft:

post->ID; if( get_post_meta($postid, 'RankVideo', true)) { echo '
'; } elseif( get_post_meta($postid, 'ecpt_rankvideo', true)) { echo '
'; } ?>

Also im Grunde bin ich auf der Suche nach den notwendigen Änderungen an der oben genannten Widget-Code, um es zu sehen, die Sterne Schriftart super Symbole basierend auf einem 5-Sterne-Rating-System im Gegensatz zu den Basis-100-System, das ich zuvor hatte.

Sinn ergeben?

Solutions Collecting From Web of "fontssymbole im Widget dynamisch anzeigen"

Dies ist mehr eine PHP-Frage von dem, was ich sammeln kann, aber hoffentlich wird das helfen oder zumindest dich auf den Weg bringen. Ich mache hier ein paar Annahmen, wie Sie FontAwesome bereits aufgerufen haben und zum Beispiel auf Ihrer Website arbeiten.

Ich bin mir auch nicht sicher warum du 2x get_post_meta(); functionen in einer Bedingungsanweisung mit der gleichen Ausgabe für jede Bedingung – macht für mich keinen Sinn, aber ich habe es in jedem Fall so in den Beispielcode aufgenommen, wie Sie es haben.

Sie können dies versuchen, ich habe Kommentare hinzugefügt, damit Sie die Logik verstehen können:

 < ?php global $wp_query; $postid = $wp_query->post->ID; if( get_post_meta($postid, 'RankVideo', true)) { $metabox_value = get_post_meta($postid, 'RankVideo', true); // Evaluates the string and converts it to integar or float value if ( strpos( $metabox_value, '.' ) === false ) { $ranking = (int)$metabox_value; } else { $ranking = (float)$metabox_value; } if( is_float( $ranking ) ) { // Check to see if whole number or decimal $rounded_ranking = round($ranking); // If decimal round it down to a whole number echo '
'; // For Loop so we can run the stars as many times as is set, with offset of 2 to because we adding half star statically adter our For loop for ($counter=2; $counter < = $rounded_ranking; $counter++){ echo ''; } echo '
'; // Static half star used as the ranking value is a decimal and the is_float condition is met. } else { echo '
'; // For Loop so we can run the stars as many times as is set, no offset need, as no half star required for whole number rankings for ($counter=1; $counter < = $ranking; $counter++){ echo ''; } } } elseif( get_post_meta($postid, 'ecpt_rankvideo', true)) { $metabox_value = get_post_meta($postid, 'ecpt_rankvideo', true); // Evaluates the string and converts it to integar or float value if ( strpos( $metabox_value, '.' ) === false ) { $ranking = (int)$metabox_value; } else { $ranking = (float)$metabox_value; } if( is_float( $ranking ) ) { $rounded_ranking = round($ranking); echo '
'; for ($counter=2; $counter < = $rounded_ranking; $counter++){ echo ''; } echo '
'; } else { echo '
'; for ($counter=1; $counter < = $ranking; $counter++){ echo ''; } } } ?>