WP_STAR_RATING() функция для отображения звездного рейтинга

# 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 ] );

Выводит:

Рейтинг 7.5

Пример 2: Рейтинг в процентах

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

Выводит:

Рейтинг 4.5 на основе 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  = '
'; $output .= '' . $title . ''; $output .= str_repeat( '', $full_stars ); $output .= str_repeat( '', $half_stars ); $output .= str_repeat( '', $empty_stars ); $output .= '
'; // Вывод HTML кода if ( $parsed_args['echo'] ) { echo $output; } return $output; }

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *