Kuinka näyttää arvioitu lukuaika blogiviesteissä
Jos pidät WordPress-blogia, yrität luultavasti löytää erilaisia laajennuksia ja katkelmia pitääksesi vierailijasi kiireisinä ja rohkaistaksesi heitä lukemaan viestejäsi napsauttamatta pois.
Nykyään vierailijat haluavat usein saada mahdollisimman paljon tietoa vain selaamalla sivua. Viestin arvioidun lukuajan näyttäminen on tässä erittäin kätevää. Tällä tavalla vierailija tietää, kuinka paljon aikaa hän tarvitsee tiedon hankkimiseen lukemalla kiinnostavaa aihetta. Tämä puolestaan rohkaisee blogin kirjoittajia kirjoittamaan viestejä, jotka ovat mielenkiintoisempia ja vähemmän aikaa vieviä. Blogin omistajana voit myös määrittää parhaan lähestymistavan, jos tarkistat mittarit ja vertaat vierailijoiden eri viesteihin käyttämää aikaa.
Jotkut lisäosat varmasti kattavat tämän toiminnon, mutta tätä käsittelevä WordPress-toiminto on erittäin helppokäyttöinen. Siksi sinun ei tarvitse tukkia blogiasi toisella laajennuksella vain tätä tarkoitusta varten.
Ymmärtääksemme tämän menetelmän helposti, selitämme sen integroimalla muutokset ilmaiseen WordPress Twenty Sixteen -teemaan.
Aloitetaan funktiosta
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;
}
}
Funktio hyväksyy kaksi parametria – sisältö ($content) ja arvioidut sanat/minuutti lukijaa ($wpm). Toinen parametri on asetettu arvoon 200 keskimääräiselle lukijalle, mutta voit asettaa sen johonkin muuhun arvoon. Voit kerätä hyödyllistä tietoa tästä Internetistä.
Toiminnon sisällä meidän on poistettava sisältö kaikesta muusta paitsi itse sanoista. Joten ensin käytämme kahta toimintoa lyhytkoodien ja tunnisteiden poistamiseen (strip_shortcodes ja strip_tags ).
Sen jälkeen meidän on laskettava puhdistetun sisällön sanat. Siksi tallennamme sisällön $word_count-muuttujaan. Tässä käytetty sanojen laskentafunktio on str_word_count.
Keskimääräisen lukuajan laskemiseksi meidän tarvitsee vain jakaa sanamäärä minuutissa luetuilla sanoilla, kun taas tässä käytetty ceil -funktio on tuloksen pyöristäminen.
Toiminnon toinen osa on tarkoitettu vain html:n tulostamiseen ajan ja sitä seuraavan tekstin kanssa.
Integroidaksesi toiminnon teemaasi, lisää se tällä hetkellä käyttämäsi teeman functions.php-tiedoston loppuun.
Kuten näet, koko keskimääräisen lukuajan takana oleva logiikka on hyvin yksinkertainen. Silti toiminto ei tee mitään itsestään. Siksi meidän on ensin kutsuttava se, jotta voimme näyttää sen blogiluettelossasi tai yksittäisissä viesteissäsi.
Toiminnon kutsuminen
Voit saada toiminnon toimimaan eri tavoilla. Käsittelemme kolme niistä alla.
Yleensä helpoin tapa suurimmalle osalle käyttäjistä on kutsua toiminto suoraan tiedoston sisältä, missä he sitä tarvitsevat. Sano, että sinun on esimerkiksi kutsuttava funktio single.php-tiedoston sisällä, joka on malli yksittäisten viestien näyttämiseen. Tämä tarkoittaa yksinkertaisesti sitä, että sinun täytyy avata tämä tiedosto ja sitten toistaa siellä oleva funktio post content parametrina, kuten tämä:
<?php echo content_estimated_reading_time( get_the_content() ); ?>
Tämä on tietysti jos sinulla on silmukka ja kaikki rakenne single.php-tiedoston sisällä, mutta luultavasti et. Esimerkki rakenteesta voi näyttää tältä:
2 Käytä suodatinta
Nykyaikaiset ja paremmin koodatut teemat erottavat nämä moduulit eri tiedostoiksi. Siksi parempi tapa on käyttää suodatinta ja palauttaa sisältö lisäämällä suodatintoiminto. Aihetta suodattimen lisäämisestä on jo käsitelty laajasti Internetissä.
3 Muokkaa olemassa olevaa toimintoa saadaksesi enemmän hallintaa
Tämä on luultavasti paras tapa, koska voit hallita enemmän lähdön sijoittamista. Twenty Sixteen -teemassa on toiminto, joka vastaa luokkien ja tunnisteiden tulostamisesta jokaiselle luettelon viestille ja yksittäisille viesteille. Se on twentysixteen_entry_taxonomies-funktio. Sinun tarvitsee vain kopioida ja liittää se functions.php-tiedostoon ja muokata sen viimeistä osaa funktiollamme arvioitua lukuaikakutsua varten.
Haluamme mainita lyhyesti, että koska säilytimme funktiolle saman nimen, se ohittaa alkuperäisen nimen. Nyt funktio, johon on tehty muokkaus, suoritetaan kaikissa paikoissa teemassa.
Muutettujen toimintojen pitäisi näyttää tältä:
/**
* 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());
}
Tällä tavalla tulostamme lukuajan tunnisteilla ja luokilla varustetussa osassa, johon se kuuluu.
Twenty Sixteen -teeman functions.php-tiedoston sisällä olevan koodin pitäisi näyttää tältä:
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());
}
Tämä muokkaus tulisi mieluiten tehdä lapsiteemassa.
Kun lisäät arvioitua lukuaikafunktiota eri teemoihin, ota huomioon, että parhaat tavat integroida funktiokutsu voivat vaihdella. Yritä kestää jonkin aikaa selaamalla käsiteltyjä vaiheita löytääksesi parhaan lähestymistavan.
Toivomme, että tämä artikkeli oli hyödyllinen. Jos pidit siitä, tutustu myös joihinkin näistä artikkeleista!