WordPress at a glance

wp_star_rating() WP 1.0

Output a HTML element with a star rating for a given rating.

Outputs a HTML element with the star rating exposed on a 0..5 scale in half star increments (ie. 1, 1.5, 2 stars). Optionally, if specified, the number of ratings may also be displayed by passing the $number parameter.

  • Since 4.4.0 Introduced the echo parameter.
✈ 1 time = 0.000057s = very fast | 50000 times = 1.30s = fast PHP 7.0.2, WP 4.4.2

No Hooks.

Return

String. Star rating HTML.

Usage

wp_star_rating( $args );
$args(array)

Array of star ratings arguments.

  • $rating (int/float)
    The rating to display, expressed in either a 0.5 rating increment, or percentage.
    Default: 0

  • $type (string)
    Format that the $rating is in. Valid values are 'rating' (default), or, 'percent'.
    Default: 'rating'

  • $number (int)
    The number of ratings that makes up this rating.
    Default: 0

  • $echo (true/false)
    Whether to echo the generated markup. False to return the markup instead of echoing it.
    Default: true

Default: array()

Code of wp_star_rating: wp-admin/includes/template.php VER 4.9.8

<?php
function wp_star_rating( $args = array() ) {
	$defaults = array(
		'rating' => 0,
		'type'   => 'rating',
		'number' => 0,
		'echo'   => true,
	);
	$r = wp_parse_args( $args, $defaults );

	// Non-English decimal places when the $rating is coming from a string
	$rating = (float) str_replace( ',', '.', $r['rating'] );

	// Convert Percentage to star rating, 0..5 in .5 increments
	if ( 'percent' === $r['type'] ) {
		$rating = round( $rating / 10, 0 ) / 2;
	}

	// Calculate the number of each type of star needed
	$full_stars = floor( $rating );
	$half_stars = ceil( $rating - $full_stars );
	$empty_stars = 5 - $full_stars - $half_stars;

	if ( $r['number'] ) {
		/* translators: 1: The rating, 2: The number of ratings */
		$format = _n( '%1$s rating based on %2$s rating', '%1$s rating based on %2$s ratings', $r['number'] );
		$title = sprintf( $format, number_format_i18n( $rating, 1 ), number_format_i18n( $r['number'] ) );
	} else {
		/* translators: 1: The rating */
		$title = sprintf( __( '%s rating' ), number_format_i18n( $rating, 1 ) );
	}

	$output = '<div class="star-rating">';
	$output .= '<span class="screen-reader-text">' . $title . '</span>';
	$output .= str_repeat( '<div class="star star-full" aria-hidden="true"></div>', $full_stars );
	$output .= str_repeat( '<div class="star star-half" aria-hidden="true"></div>', $half_stars );
	$output .= str_repeat( '<div class="star star-empty" aria-hidden="true"></div>', $empty_stars );
	$output .= '</div>';

	if ( $r['echo'] ) {
		echo $output;
	}

	return $output;
}

Related Functions

From category: Uncategorized

No comments
    Hello, !     Log In . Register