Kuidas kuvada ajaveebipostitustes hinnangulist lugemisaega
Kui teil on WordPressi ajaveeb, proovite tõenäoliselt leida erinevaid pistikprogramme ja väljalõikeid, et hoida oma külastajaid hõivatud ja julgustada neid lugema teie postitusi ilma klõpsamata.
Tänapäeval soovivad külastajad sageli lehte sirvides võimalikult palju teavet saada. Postituse hinnangulise lugemisaja kuvamine on selleks väga mugav. Nii saab külastaja huvipakkuvat teemat lugedes teada, kui palju aega teabe hankimiseks kulub. See omakorda julgustab ajaveebikirjutajaid kirjutama postitusi, mis on huvitavamad ja vähem aeganõudvad. Samuti saate ajaveebi omanikuna määrata parima lähenemisviisi, kui kontrollite mõõdikuid ja võrdlete külastajate erinevatele postitustele kuluvat aega.
Mõned pistikprogrammid kindlasti katavad seda funktsiooni, kuid seda käsitlev WordPressi funktsioon on väga lihtne kasutada. Seetõttu pole vaja oma ajaveebi ainult sel eesmärgil mõne muu pistikprogrammiga ummistada.
Selle meetodi hõlpsaks mõistmiseks selgitame seda, integreerides muudatused tasuta WordPressi Twenty Sixteen teemasse.
Alustame funktsiooniga
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;
}
}
Funktsioon aktsepteerib kahte parameetrit – sisu ($content) ja hinnangulisi sõnu lugeja minutis ($wpm). Teine parameeter on keskmise lugeja jaoks seatud väärtusele 200, kuid saate määrata ka mõne muu väärtuse. Internetist saate selle kohta kasulikku teavet koguda .
Funktsiooni sees peame eemaldama sisu kõigest muust peale sõnade enda. Esiteks kasutame lühikoodide ja siltide eemaldamiseks kahte funktsiooni (strip_shortcodes ja strip_tags ).
Seejärel peame puhastatud sisus sõnad kokku lugema. Seetõttu salvestame sisu muutujasse $word_count. Siin kasutatav sõnade loendamise funktsioon on str_word_count.
Keskmise lugemisaja arvutamiseks peame jagama sõnade arvu ainult minutis loetud sõnadega, siin kasutatav funktsioon ceil on aga tulemuse ümardamiseks.
Funktsiooni teine osa on mõeldud ainult html-i väljastamiseks koos aja ja järgneva tekstiga.
Funktsiooni integreerimiseks oma teemasse lisage see lihtsalt kasutatava teema faili functions.php lõppu.
Nagu näete, on kogu keskmise lugemisaja loogika väga lihtne. Siiski ei tee funktsioon iseenesest midagi. Sellepärast peame selle kuvamiseks oma ajaveebiloendis või üksikutes postitustes esmalt sellele helistama.
Funktsiooni kutsumine
Funktsiooni tööle panemiseks on erinevaid viise. Allpool käsitleme neist kolme.
Tavaliselt on enamiku kasutajate jaoks lihtsaim viis funktsiooni kutsuda otse faili seest, kus nad seda vajavad. Oletagem, et peate näiteks kutsuma funktsiooni single.php faili sees, mis on üksikute postituste kuvamise mall. See tähendab lihtsalt, et peate selle faili avama ja seejärel kordama seal olevat funktsiooni, mille parameetriks on postituse sisu, näiteks järgmiselt:
<?php echo content_estimated_reading_time( get_the_content() ); ?>
Seda muidugi juhul, kui teil on tsükkel ja kogu struktuur failis single.php, kuid tõenäoliselt te seda ei tee. Struktuuri näide võib välja näha selline:
2 Kasutage filtrit
Kaasaegsed ja paremini kodeeritud teemad eraldavad need moodulid erinevatesse failidesse. Seetõttu on parem meetod filtri kasutamine ja sisu tagastamine filtrifunktsiooni lisamisega. Filtri lisamise teemat on Internetis juba laialdaselt käsitletud.
3 Suurema kontrolli saamiseks muutke olemasolevat funktsiooni
See on ilmselt parim lähenemisviis, kuna saate väljundi positsioneerimist paremini juhtida. Teemas Twenty Sixteen on funktsioon, mis vastutab iga loendis oleva postituse ja üksikute postituste kategooriate ja siltide printimise eest. See on funktsioon twentysixteen_entry_taxonomies. Teil jääb üle vaid see lihtsalt kopeerida ja kleepida faili functions.php ning muuta selle viimast osa meie funktsiooniga hinnangulise lugemisaja väljakutsumiseks.
Tahaksime lühidalt mainida, et kuna jätsime funktsioonile sama nime, alistab see algse nime. Nüüd käivitatakse meie muudatusega funktsioon teema kõigis kohtades.
Muudetud funktsioonid peaksid välja nägema järgmised:
/**
* 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());
}
Nii väljastame lugemisaja märgendite ja kategooriatega osas, kuhu see kuulub.
Twenty Sixteen theme faili functions.php olev kood peaks välja nägema järgmine:
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());
}
Eelistatavalt tuleks see muudatus teha lapseteemas.
Eeldatava lugemisaja funktsiooni lisamisel erinevatele teemadele pidage meeles, et funktsioonikutse integreerimise parimad viisid võivad erineda. Proovige võtta veidi aega, sirvides meie poolt käsitletud samme, et leida parim lähenemisviis.
Loodame, et see artikkel oli teile kasulik. Kui teile see meeldis, vaadake ka mõnda neist artiklitest!