wp_star_rating() WP 3.8.0

Виводить HTML рейтинг (зірочки) для вказаного рейтингу.

Виводить HTML розмітку із зірками від 0 до … Розуміє половини на кшталт 4.5 зірки…

stars

За промовчанням працює тільки в адмін панелі.

1 раз – 0.000057 сек
(дуже швидко) | 50000 разів – 1.30 сек
(швидко) |
PHP 7.0.2, WP 4.4.2

Хуків немає.

Повертає

Строку. HTML-код.

Використання

wp_star_rating ($ args);
$args
(масив)

Масив аргументів для виведення зірок.

  • rating (int)
    Рейтинг, який потрібно вивести.

    Якщо в type = rating, то число буде вважатися рейтингом і буде виведено кількість зірок, зазначених у цьому параметрі.

    Якщо в type = percent, то число буде вважатися відсотком і буде показано 5 зірок заповнених відповідно до зазначеного числа.
    За замовчуванням: 0

  • type (string)
    Формат, в якому вказано параметр $rating . Можливо: ratingабо percent.
    За замовчуванням: ‘rating’

  • number (int)
    Число на основі скільки голосів показаний результат, додати в title атрибут тега. Відставте 0, щоб не показувати.
    За замовчуванням: 0

  • echo (bool)
    Виводити чи повертати результат?
    Типово: true

Приклади

0

#1 Висновок рейтингу (зірок)

Приклади

wp_star_rating(['rating'=>7.5, 'type'=>'rating', 'number'=>0]);

/* Виведе:
<div class="star-rating" title="Рейтинг 7,5"><span class="screen-reader-text">Рейтинг 7,5</span>
	<div class="star star-full"></div>
	<div class="star star-full"></div>
	<div class="star star-full"></div>
	<div class="star star-full"></div>
	<div class="star star-full"></div>
	<div class="star star-full"></div>
	<div class="star star-full"></div>
	<div class="star star-half"></div>
</div>
*/

stars.2

wp_star_rating(['rating'=>85, 'type'=>'percent', 'number'=>654]));

/* Виведе:
<div class="star-rating" title="Рейтинг 4,5 на основі 654 голосів"><span class="screen-reader-text">Рейтинг 4,5 на основі 654 голосів</span>
	<div class="star star-full"></div>
	<div class="star star-full"></div>
	<div class="star star-full"></div>
	<div class="star star-full"></div>
	<div class="star star-half"></div>
</div>
*/

Виглядає так:

stars

0

#2 Виведення у фронт-енді (зовнішньої частини)

У фронт-енді функція не працює і краще зробити свою подібну функцію. Але якщо у вас підключаються шрифти ‘dashicons’, тобто є сенс використовувати цю функцію, для цього потрібно підключити потрібний файл і css стилі:

// для фронту
require_once ABSPATH .'wp-admin/includes/template.php';

// Підключимо іконки
add_action('wp_enqueue_scripts', function(){ wp_enqueue_style('dashicons'); });

// Виводимо HTML
wp_star_rating( array( 'rating'=>4.5, 'type'=>'rating', 'number'=>521, ) );

echo '
<style>
.screen-reader-text{ position: absolute; margin: -1px; padding: 0; height: 1px; width: 1px; overflow: hidden; clip: rect(0 0 0 0); border: 0; word-wrap: normal!important; }
.star-rating .star-full:before { content: "f155"; }
.star-rating .star-half:before { content: "f459"; }
.star-rating .star-empty:before { content: "f154"; }
.star-rating .star {
	color: #0074A2;
	display: inline-block;
	font-family: dashicons;
	font-size: 20px;
	font-style: normal;
	font-weight: 400;
	height: 20px;
	line-height: 1;
	text-align: center;
	text-decoration: inherit;
	vertical-align: top;
	width: 20px;
}
</style>';

/* Отримаємо:

<div class="star-rating" data-title="4,5 rating based on 521 ratings">
	<span class="screen-reader-text">4,5 Rating based on 521 ratings</span>
	<div class="star star-full"></div>
	<div class="star star-full"></div>
	<div class="star star-full"></div>
	<div class="star star-full"></div>
	<div class="star star-half"></div>
</div>

*/

список змін

З версії 3.8.0Введено.
З версії 4.4.0Встановлено параметр echo .

Код wp_star_rating() WP 6.0.2

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

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

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

	// Визначте номер кожного типу потрібний.
	$ full_stars = floor ($ rating);
	$half_stars = ceil($rating - $full_stars);
	$empty_stars = 5 - $full_stars - $half_stars;

	if ( $parsed_args['number'] ) {
		/* translators: 1: The ratings, 2: The number of ratings. */
		$format = _n( '%1$s rating based on %2$s rating', '%1$s rating based on %2$s ratings', $parsed_args['number'] );
		$title = sprintf( $format, number_format_i18n( $rating, 1 ), number_format_i18n( $parsed_args['number'] ) );
	} else {
		/* translators: %s: 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 ( $parsed_args['echo'] ) {
		echo $output;
	}

	return $output;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *