...
✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Як відобразити приблизний час читання в публікаціях блогу

2

Якщо ви ведете блог 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 є функція, яка відповідає за друк категорій і тегів для кожної публікації в списку та окремих публікацій. Це функція twentysixteen_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, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі