# WP_STAR_RATING() │ WP 3.8.0
## Описание
Функция wp_star_rating()
выводит HTML-элемент с рейтингом в виде звезд для заданного значения. Рейтинг отображается на шкале от 0 до 5 с шагом в половину звезды (например, 1, 1.5, 2 звезды). Опционально можно указать количество оценок, которое также будет отображаться, передав параметр $number
.
## Производительность
- Время выполнения 1 раз — 0.000057 сек (очень быстро)
- Время выполнения 50000 раз — 1.30 сек (быстро)
- PHP: 7.0.2, WP: 4.4.2
## Возвращаемое значение
Функция возвращает строку — HTML-код с отображением звездного рейтинга.
## Использование
```php
wp_star_rating( $args );
Параметры
$args
(массив) — массив аргументов для звездного рейтинга.
По умолчанию: array()
rating
(int|float): Рейтинг для отображения (можно указать как 0.5, так и в процентах).type
(string): Формат, в котором указан$rating
. Допустимые значения:'rating'
(по умолчанию) или'percent'
.number
(int): Количество оценок, которые составляют этот рейтинг.echo
(true|false): Выводить ли сгенерированный код. Еслиfalse
, функция вернет код вместо его отображения. По умолчанию:true
.
Примеры
Пример 1: Рейтинг в звездах
wp_star_rating( ['rating'=>7.5, 'type'=>'rating', 'number'=>0 ] );
Выводит:
Пример 2: Рейтинг в процентах
wp_star_rating( ['rating'=>85, 'type'=>'percent', 'number'=>654 ] );
Выводит:
Важные заметки
- Если вы хотите использовать функцию на переднем плане (в пользовательском интерфейсе), важно подключить необходимые стили и файлы. Если на вашем сайте есть шрифты "dashicons", можно использовать функцию без проблем.
- Чтобы подключить стили и функцию, используйте следующий код:
// Подключение для использования на переднем плане
require_once ABSPATH .'wp-admin/includes/template.php';
// Подключение иконок
add_action( 'wp_enqueue_scripts', function(){
wp_enqueue_style( 'dashicons' );
} );
// Добавление стилей
add_action( 'wp_head', function(){
?>
Изменения
- С версии 3.8.0 — функция была добавлена.
- С версии 4.4.0 — добавлен параметр
echo
.
Код функции
function wp_star_rating( $args = array() ) {
$defaults = array(
'rating' => 0,
'type' => 'rating',
'number' => 0,
'echo' => true,
);
$parsed_args = wp_parse_args( $args, $defaults );
// Преобразование несоответствующих десятичных точек
$rating = (float) str_replace( ',', '.', $parsed_args['rating'] );
// Преобразование процентов в звездный рейтинг
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'] ) {
$format = _n( '%1$s рейтинг на основе %2$s оценок', '%1$s рейтинг на основе %2$s оценок', $parsed_args['number'] );
$title = sprintf( $format, number_format_i18n( $rating, 1 ), number_format_i18n( $parsed_args['number'] ) );
} else {
$title = sprintf( __( '%s рейтинг' ), number_format_i18n( $rating, 1 ) );
}
// Формирование HTML кода
$output = '
';
// Вывод HTML кода
if ( $parsed_args['echo'] ) {
echo $output;
}
return $output;
}