Приветствую вас в очередной раз.
Сегодня мне нужно было сделать на сайте очередном склонение слов. Причем в разных местах и разные слова. Вы уже наверное видели на сайтах созданных на вордпресс, как на страницах комментариев или отзывов написаны слова о количестве комментариев. Стандартно это выглядит так: «К этой записи комментариев: 3», а вот подправлено и красиво: «К этой записи 3 комментария».
Конечно в WordPress нет механизма, который это делает, хотя нет, есть один способ, это перевод тем, но увы переводчики этим не заморачиваются. Сначала я хотел сделать именно так. Но когда узнал задачу, что на сайте, код должен как-то склонять различные слова, которых будет много и согласно динамически меняющемуся количеству, то здесь пришлось изменить немного тактику. Клиенту нужно было чтобы на сайте было написано правильно по-русски, чтобы это производило приятное впечатление. Его клиенты подмечали такие вот ошибки.
Сначала я решил сделать простую функцию, которая правильно умела склонять слова, в зависимости от числа.
Задача стояла такая, нужно чтобы учитывались первое слово, потом число, затем второе слово, и все выглядело правильно.
Итак, первое, что я сделал, это открыл файл functions.php текущей темы (или дочерней если у вас такая есть) и добавил в него вот такой код функции:
function padeg_wplife ($before,$number,$after) { // $before - первое слово, $number - число, согласно которому происходит склонение,$after - второе слово, которое после числа $numbers = array(2,0,1,1,1,2); echo $before[($number%100>4 && $number%100<20)? 2: $numbers[min($number%10, 5)]].' '.$number.' '.$after[($number%100>4 && $number%100<20)? 2: $numbers[min($number%10, 5)]]; }
А в файлах, в которых нужно выводит склоняемый текст с количеством вставлял вызывал такую функцию:
<?php padeg_wplife( /* варианты написания для количества 1, 2 и 5 */ array('добавлен','добавлено','добавлено'), /* количество */ $count, /* варианты написания для количества 1, 2 и 5 */ array('товар','товара','товаров') ); ?>
Результаты на сайте были такие: «добавлен 1 товар«, «добавлено 4 товара«, «добавлено 10 товаров«
Как и где использовать данный код для склонения словосочетаний, вы можете придумать уже сами для своего сайта.
Клиент также попросил все это попробовать оформить через шорткод, чтобы была возможность редактору вставлять такие склонения непосредственно в записи или странице. Задача реализуемая, возможно напишу и этот код.
Удачи! Есть вопросы? Задавайте в комментариях.