<?php
/**
* Возвращает строку вида "X просмотр/просмотра/просмотров" в зависимости
* от переданного числа X.
*/
function get_view_count_with_declension($count) {
// Гарантируем, что это целое число
$count = (int) $count;
// Определяем конечные две и одну цифру для правильных окончаний
$mod100 = $count % 100;
$mod10 = $count % 10;
// Логика склонения по стандартным правилам русского языка:
// Если последние две цифры в диапазоне 11...14 – "просмотров".
// Иначе смотрим последнюю цифру.
if ($mod100 >= 11 && $mod100 <= 14) {
$declension = 'просмотров';
} else {
switch ($mod10) {
case 1:
$declension = 'просмотр';
break;
case 2:
case 3:
case 4:
$declension = 'просмотра';
break;
default:
$declension = 'просмотров';
}
}
// Собираем всё в одну строку с пробелом
return $count . ' ' . $declension;
}
/**
* Возвращает корректно склонённое количество просмотров для текущего поста.
*/
function display_post_views() {
// Получаем результат шорткода, удаляя возможные HTML-теги и пробелы
$views_str = strip_tags(do_shortcode('
31
'));
$views_str = trim($views_str);
// Приводим к целому числу
$views = (int) $views_str;
// Возвращаем строку с корректным склонением
return get_view_count_with_declension($views);
}
// Используем функцию для отображения
echo display_post_views();
?>