<?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('')); $views_str = trim($views_str); // Приводим к целому числу $views = (int) $views_str; // Возвращаем строку с корректным склонением return get_view_count_with_declension($views); } // Используем функцию для отображения echo display_post_views(); ?>
СНИППЕТ