Как вывести время чтения поста в Вордпресс

Как вывести время чтения поста в Вордпресс

11 декабря 2017

Некоторые информационные ресурсы в анонсах своих публикаций кроме основных метаданных публикуют время, которое потребуется читателю на прочтение всей статьи. Это очень удобно, особенно в случае с лонгридами. Сегодня я покажу, как такая функция реализуется в Вордпресс.

Топ 10 продающих лендингов для Вордпресс

Задача решается двумя традиционными способами. С помощью плагина и вручную, для чего создается специальная функция, которая и будет считать время.

С плагинами

В случае с плагинами все предельно просто. К примеру, можно установить Reading Time WP или любой другой похожий плагин. Можно даже зайти дальше и установить Worth The Read. Он выведет динамический прогресс-бар, который будет заполняться по мере скроллинга страницы.

Без плагинов

Без плагинов задача тоже решается довольно просто. Например, способом, предложенным Мэттом Бирчлером, смысл которого заключается в подсчете количества слов в записи, делением этого числа на среднюю скорость чтения, равную 200 словам в минуту и последующим округлением до целого.

function reading_time() {
$content = get_post_field( 'post_content', $post->ID );
$word_count = str_word_count( strip_tags( $content ) );
$readingtime = ceil($word_count / 200);

if ($readingtime == 1) {
$timer = " minute";
} else {
$timer = " minutes";
}
$totalreadingtime = $readingtime . $timer;

return $totalreadingtime;
}

Вывести значение можно в любом месте шаблона таким образом.

<?php echo reading_time(); ?>

Способ адаптирован под англоязычные сайты. В русском языке формы склонения имеют несколько иную механику. Поэтому, функцию можно упростить.

function reading_time() {
$content = get_post_field( 'post_content', $post->ID );
$word_count = str_word_count( strip_tags( $content ) );
$readingtime = ceil($word_count / 200);
$totalreadingtime = $readingtime . ' мин.';
return $totalreadingtime;
}

Или, наоборот, усложнить.

function reading_time() {
$content = get_post_field( 'post_content', $post->ID );
$word_count = str_word_count( strip_tags( $content ) );
$readingtime = ceil($word_count / 200);

if ($readingtime == 1) {
$timer = " минуту";
} elseif ($readingtime == 2 || $readingtime == 3 || $readingtime == 4) {
$timer = " минуты";
} else {
$timer = " минут";
}
$totalreadingtime = 'Чтение займет ' . $readingtime . $timer;

return $totalreadingtime;
}

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

Всё самое новое и интересное я публикую в своём Телеграм-канале. Подписывайтесь!

Иван Данилин
Автор: Иван Данилин

Практикующий веб-разработчик, специализируюсь на платформе Вордпресс.

Добавить комментарий

Быстрый, надёжный и недорогой российский хостинг сайтов от 98 руб.
Подробнее