Дизайн та розробка сайту

Склоняем слово комментарии WordPress

Склонение комментарий

Доброго времени суток. 🙂

Этот урок посвящен небольшому улучшению, ну или дополнению к стандартному функционалу WordPress. Каждый у кого есть свой блог на WordPress, замечал, что на некоторых стандартных темах или на других есть такой маленький некрасивый элемент, который сообщает о количестве оставленных комментариев. Некрасивый, он потому что пишет текст примерно следующего вида - К этой записи комментариев: 3. Конечно же хочется видеть правильное написание, как это сделано на некоторых темах или Вы видели у других на сайте - К записи оставили 3 комментария или Опубликовано 8 комментариев.

Склонение комментарий

Хочу показать Вам, как можно склонить слово Комментарий в зависимости от количества. Получится примерно так - 1 комментарий, 2 комментария, 5 комментариев. Думаю так намного красивей и более похоже на правду :). Покажу два варианта, реализации склонения слов.

Первый вариант просто склоняет слово - Комментарий. Для этого нужно открыть файл functions.php и добавить в него перед закрывающимся тегом ?> новую функцию.

function plural_form($number, $after) {
    $cases = array (2, 0, 1, 1, 1, 2);
    echo $number.' '.$after[ ($number%100>4 && $number%100<20)? 2: $cases[min($number%10, 5)] ];
}

Теперь надо открыть файл управления выводом комментариев comments.php. Потом найти в нем вызов функции, которая выводит количество. У меня она была вот такого вида:

<?php comments_number('Комментарии  %' );?>

У Вас может быть немного другая, ее надо заменить на новую, которая имеет следующий вид:

<?php
plural_form(
    get_comments_number(),
    array('комментарий','комментария','комментариев')
);
?>

Теперь у вас выведет - 2 комментария и тд. Можете спереди перед функцией дописать, например - Посетители оставили. В результате у Вас будет - Посетители оставили 2 комментария.

Второй вариант склоняет сразу два слова. Одно перед цифрой, второе после. Для примера выбраны слова - Опубликовано и Комментарий. В результате у нас получится - Опубликовано 8 комментариев. Такой вариант использован и у меня на сайте.

Опять же надо просто первый код добавить в functions.php:

function plural_form($number,$before,$after) {
    $cases = array(2,0,1,1,1,2);
    echo $before[($number%100>4 && $number%100<20)? 2: $cases[min($number%10, 5)]].' '.$number.' '.$after[($number%100>4 && $number%100<20)? 2: $cases[min($number%10, 5)]];
}

Второй код, также как и в первом варианте, нужно вставить вместо того что стоит у вас в comments.php.

<?php
plural_form(
    get_comments_number(),
    array('Опубликован','Опубликовано','Опубликовано'),
    array('комментарий','комментария','комментариев')
);
?>

По сути все. Больше ничего не нужно. По умолчанию, разработчики WordPress не придали особого значения такому вот функционалу с заморочкой на русском языке. Но, думаю, если сделаете все правильно, то добьетесь нужного результата.

На этом все, спасибо за внимание. 🙂

Дизайн та розробка сайту

Back to top