Hur man visar beräknad lästid på blogginlägg
Om du driver en WordPress-blogg försöker du förmodligen hitta olika plugins och utdrag för att hålla dina besökare sysselsatta och uppmuntra dem att läsa dina inlägg utan att klicka iväg.
Nuförtiden vill besökarna ofta få så mycket information som möjligt genom att bara skumma igenom en sida. Att visa uppskattad lästid för ett inlägg är väldigt praktiskt för detta. På detta sätt kommer en besökare att veta hur mycket tid de behöver för att få information genom att läsa ett ämne av intresse. Detta kommer i sin tur också att uppmuntra bloggskribenter att skriva inlägg som blir mer intressanta och mindre tidskrävande. Som bloggägare kommer du också att kunna bestämma det bästa tillvägagångssättet om du kontrollerar statistiken och jämför den tid besökarna spenderar på olika inlägg.
Vissa plugins täcker förvisso denna funktionalitet, men WordPress-funktionen som hanterar detta är väldigt enkel att använda. Därför finns det ingen anledning att täppa till din blogg med ett annat plugin bara för detta ändamål.
För att enkelt förstå denna metod kommer vi att förklara den genom att integrera ändringar i det kostnadsfria WordPress Twenty Sixteen-temat.
Låt oss börja med funktionen
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;
}
}
Funktionen accepterar två parametrar – innehåll ($content) och uppskattade ord per minut av läsaren ($wpm). Den andra parametern är inställd på 200 för en genomsnittlig läsare, men du kan ställa in den på något annat värde. Du kan samla användbar information om detta på internet.
Inuti funktionen måste vi ta bort innehåll från allt annat utom själva orden. Så först kommer vi att använda två funktioner för att ta bort kortkoder och taggar (strip_shortcodes och strip_tags ).
Efteråt behöver vi räkna orden i det rensade innehållet. Därför kommer vi att lagra innehållet i en $word_count-variabel. Funktionen för att räkna ord som används här är str_word_count.
För att beräkna den genomsnittliga lästiden behöver vi bara dividera ordantalet med ord som lästs per minut, medan ceil- funktionen som används här är för att avrunda resultatet.
Den andra delen av funktionen är bara för att mata ut html med tid och text som följer.
För att integrera funktionen i ditt tema, lägg bara till den i slutet av functions.php-filen för det tema du använder för närvarande.
Som du kan se är hela logiken bakom den genomsnittliga lästiden väldigt enkel. Ändå kommer funktionen inte att göra något av sig själv. Det är därför vi måste ringa det först för att kunna visa det på din blogglista eller enstaka inlägg.
Ringer funktionen
Det finns olika sätt på vilka du kan få funktionen att fungera. Vi kommer att täcka tre av dem nedan.
Vanligtvis är det enklaste sättet för en stor majoritet av användare att anropa funktionen direkt inifrån filen där de behöver den. Säg att du till exempel behöver anropa funktionen inuti filen single.php, som är en mall för att visa enstaka inlägg. Detta betyder helt enkelt att du måste öppna den här filen och sedan upprepa funktionen där med postinnehåll som parameter, så här:
<?php echo content_estimated_reading_time( get_the_content() ); ?>
Detta är naturligtvis om du har en loop och all struktur inuti single.php-filen, men troligtvis kommer du inte att göra det. Ett exempel på strukturen kan se ut så här:
2 Använd filter
Moderna och bättre kodade teman separerar dessa moduler i olika filer. Därför är en bättre metod att använda filter och att returnera innehållet med tillägg av filterfunktionen. Ämnet om hur man lägger till filter har redan behandlats flitigt på internet.
3 Ändra befintlig funktion för mer kontroll
Detta är förmodligen det bästa tillvägagångssättet eftersom du kan ha mer kontroll för att placera utdata. I Twenty Sixteen tema finns en funktion som ansvarar för att skriva ut kategorier och taggar för varje inlägg på listan och enstaka inlägg. Det är en tjugosexton_entry_taxonomies funktion. Allt som återstår för dig att göra är att helt enkelt kopiera och klistra in det inuti functions.php och ändra dess sista del med vår funktion för uppskattad lästid.
Vi skulle kort vilja nämna att eftersom vi behöll samma namn för funktionen kommer den att åsidosätta den ursprungliga. Nu kommer funktionen med vår modifiering i att köras på alla ställen inom temat.
Ändrade funktioner ska se ut så här:
/**
* 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());
}
På så sätt kommer vi att mata ut lästiden i delen med taggar och kategorier där den hör hemma.
Koden inuti Twenty Sixteen temas functions.php-fil bör se ut så här:
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());
}
Helst ska denna modifiering göras i barntemat.
När du lägger till den uppskattade lästidsfunktionen i olika teman, tänk på att de bästa sätten att integrera funktionsanrop kan variera. Försök att ta lite tid genom att bläddra igenom stegen som vi har täckt för att hitta det bästa tillvägagångssättet.
Vi hoppas att du tyckte att den här artikeln var till hjälp. Om du gillade det, kolla gärna in några av dessa artiklar också!