...
WEB и WordPress новости, темы, плагины. Здесь мы делимся советами и лучшими решениями для сайтов.

Как отображать расчетное время чтения в сообщениях блога

46

Если вы ведете блог WordPress, вы, вероятно, пытаетесь найти различные плагины и фрагменты кода, чтобы занять своих посетителей и побудить их читать ваши сообщения, не переходя по ссылке.

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

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

Чтобы легко понять этот метод, мы объясним его, интегрировав изменения в бесплатную тему WordPress Twenty Sixteen.

Начнем с функции

if( !function_exists('content_estimated_reading_time')) {
/**
Function that estimates reading time for a given $content.
@param string $content Content to calculate read time for.
@paramint $wpm Estimated words per minute of reader.
@returns int $time Esimated reading time.
*/
function content_estimated_reading_time( $content = '', $wpm = 200) {
$clean_content= strip_shortcodes( $content );
$clean_content= strip_tags( $clean_content);
$word_count= str_word_count( $clean_content);
$time = ceil( $word_count/ $wpm );
$output = '<span class="read-time-holder">';
$output .= '<span class="read-time">'. $time .'</span>' .' ';
$output .= '<span class="read-text">'. esc_attr__('min read', 'twentysixteen' ). '</span>';
$output .='</span>';
return $output;
}
}

Функция принимает два параметра — контент ($content) и расчетное количество слов в минуту чтения ($wpm). Второй параметр установлен на 200 для среднего читателя, но вы можете установить для него любое другое значение. Вы можете собрать некоторую полезную информацию об этом в Интернете.

Внутри функции нам нужно отделить содержимое от всего остального, кроме самих слов. Итак, сначала мы будем использовать две функции для удаления шорткодов и тегов (strip_shortcodes и strip_tags ).

После этого нам нужно подсчитать количество слов в очищенном контенте. Поэтому мы будем хранить содержимое в переменной $word_count. Здесь используется функция подсчета слов — str_word_count.

Чтобы рассчитать среднее время чтения, нам нужно только разделить количество слов на количество слов, прочитанных за минуту, а функция ceil, используемая здесь, предназначена для округления результата.

Вторая часть функции предназначена только для вывода html со временем и последующим текстом.

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

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

Вызов функции

Есть разные способы заставить функцию работать. Ниже мы рассмотрим три из них.

Как правило, для подавляющего большинства пользователей самый простой способ — вызвать функцию непосредственно из файла, где она им нужна. Скажем, например, вам нужно вызвать функцию внутри файла single.php, который является шаблоном для отображения одиночных сообщений. Это просто означает, что вам нужно открыть этот файл, а затем повторить там функцию с пост-контентом в качестве параметра, например:

<?php echo content_estimated_reading_time( get_the_content() ); ?>

Это конечно если у вас есть цикл и вся структура внутри файла single.php, но скорее всего не будет. Пример структуры может выглядеть так:

2 Использовать фильтр

Современные и лучше закодированные темы разделяют эти модули на разные файлы. Следовательно, лучший метод — использовать фильтр и возвращать содержимое с добавлением функции фильтра. Тема о том, как добавить фильтр, уже широко обсуждалась в Интернете.

3 Измените существующую функцию для большего контроля

Это, вероятно, лучший подход, потому что вы можете лучше контролировать позиционирование вывода. В теме Twenty Sixteen есть функция, отвечающая за печать категорий и тегов для каждого поста в списке и отдельных постов. Это функцияwentysixteen_entry_taxonomies. Все, что вам осталось сделать, это просто скопировать и вставить его в functions.php и изменить его последнюю часть с помощью нашей функции для вызова расчетного времени чтения.

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

Измененные функции должны выглядеть так:

/**
* Function override of default function in parent theme
* Adding reading time function at the end
*/
function twentysixteen_entry_taxonomies() {
$categories_list= get_the_category_list( _x( ', ', 'Used between list items, there is a space after the comma.', 'twentysixteen') );
if ($categories_list&&twentysixteen_categorized_blog()) {
printf( '<span class="cat-links"><span class="screen-reader-text">%1$s </span>%2$s</span>',
_x( 'Categories', 'Used before category names.', 'twentysixteen' ),
$categories_list
);
}
$tags_list= get_the_tag_list( '', _x( ', ', 'Used between list items, there is a space after the comma.', 'twentysixteen') );
if ($tags_list&&! is_wp_error( $tags_list)) {
printf( '<span class="tags-links"><span class="screen-reader-text">%1$s </span>%2$s</span>',
_x( 'Tags', 'Used before tag names.', 'twentysixteen' ),
$tags_list
);
}
/*our code modification to this function*/
print content_estimated_reading_time(get_the_content());
}

Таким образом, мы будем выводить время чтения в части с тегами и категориями, к которым оно относится.

Как отображать расчетное время чтения в сообщениях блога

Код внутри файла functions.php темы Twenty Sixteen должен выглядеть следующим образом:

Как отображать расчетное время чтения в сообщениях блога

if (!function_exists('content_estimated_reading_time')) {
/**
Function that estimates reading time for a given $content.
@param string $content Content to calculate read time for.
@param int $wpm Estimated words per minute of reader.
@returns int $time Esimated reading time.
*/
function content_estimated_reading_time( $content = '', $wpm = 200) {
$clean_content = strip_shortcodes( $content );
$clean_content = strip_tags( $clean_content );
$word_count = str_word_count( $clean_content );
$time = ceil( $word_count / $wpm );
$output = '<span class="read-time-holder">';
$output .= '<span class="read-time">'. $time. '</span>'. ' ';
$output .= '<span class="read-text">'. esc_attr__( 'min read', 'twentysixteen' ). '</span>';
$output .= '</span>';
return $output;
}
}
/**
* Function override of default function in parent theme
* Adding reading time function at the end
*/
function twentysixteen_entry_taxonomies() {
$categories_list = get_the_category_list( _x( ', ', 'Used between list items, there is a space after the comma.', 'twentysixteen') );
if ($categories_list && twentysixteen_categorized_blog()) {
printf( '<span class="cat-links"><span class="screen-reader-text">%1$s </span>%2$s</span>',
_x( 'Categories', 'Used before category names.', 'twentysixteen' ),
$categories_list
);
}
$tags_list = get_the_tag_list( '', _x( ', ', 'Used between list items, there is a space after the comma.', 'twentysixteen') );
if ($tags_list &&! is_wp_error( $tags_list)) {
printf( '<span class="tags-links"><span class="screen-reader-text">%1$s </span>%2$s</span>',
_x( 'Tags', 'Used before tag names.', 'twentysixteen' ),
$tags_list
);
}
/*our code modification to this function*/
print content_estimated_reading_time(get_the_content());
}

Желательно эту модификацию делать в дочерней теме.

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

Мы надеемся, что эта статья оказалась для вас полезной. Если вам понравилось, пожалуйста, не стесняйтесь проверить некоторые из этих статей!

Источник записи: wpklik.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее