CODYSHOP
темы и плагины для WordpressСегодня хотел поделиться еще одной фишкой, которую можно установить на сайт. Иногда, для удобства пользователей, можно показать таймер, который выводит приблизительное время на прочтение статьи. Это позволит удержать внимание читателя.
Хотя эту задачу можно выполнить с помощью плагина Post Reading Time, давайте попробуем написать свою функцию. Кроме того, мы будем учитывать словоформы русского языка. Вот что у нас получилось. Разместите код ниже в файл function.php вашей темы.
function read_time($arg){ $arg = array( 'wpm' => 300, // слов в минуту; установите значение от 200 до 400 'min1' => 'минута', 'min2' => 'минуты', 'min3' => 'минут', 'sec1' => 'секунда', 'sec2' => 'секунды', 'sec3' => 'секунд', ); global $post_ID; $content = apply_filters('the_content', get_post_field('post_content', $post_ID)); $num_words = count(explode(" ",strip_tags($content))); $minutes = floor( $num_words / $arg[wpm] ); // округляем минуты в меньшую сторону $seconds = floor( $num_words % $arg[wpm] / ($arg[wpm] / 60)); $min = $minutes%10==1&&$minutes%100!=11? $arg[min1] :( $minutes%10>=2&&$minutes%10<=4&&($minutes%100<10||$minutes%100>=20 )? $arg[min2] : $arg[min3]); if(!empty($arg[sec1]) and !empty($arg[sec2]) and !empty($arg[sec3]) and $seconds!=0){ $sec=$seconds%10==1&&$seconds%100!=11? $arg[sec1] :($seconds%10>=2&&$seconds%10<=4&&($seconds%100<10||$seconds%100>=20)? $arg[sec2] : $arg[sec3]); $second=', '.$seconds.' '.$sec; } // если на прочтение меньше 1 минуты, то выводим секунды if ( $minutes == '0' ){ $minutes = $seconds; $min = $sec; } return '<span>На прочтение: ' . $minutes . ' ' . $min . '</span>'; }
Теперь выводим таймер. Его можно вывести в одиночной записи, обычно за неё отвечает файл single.php
<?php echo read_time( $arg ); ?>
Осталось теперь только красиво оформить. Думаю, что вы справитесь с этой задачей самостоятельно под.