Czas trwania czytania postu Krótki kod WordPress
Kilka dni temu widziałem witrynę zawierającą na górze strony dodatkowe informacje: szacowany czas przeczytania strony. Wydało mi się to zabawne i chciałem stworzyć coś podobnego za pomocą krótkiego kodu WordPress.
Jest to dość łatwe do zrobienia, więc zaczynajmy!
Krok 1: Utwórz wtyczkę
Jak zwykle będziemy tworzyć wtyczkę, więc utwórz nowy folder w wp-content/plugins i nazwij go „post-reading-duration-shortcode”, otwórz go i utwórz plik o nazwie „post-reading-duration-shortcode.php”. Otwórz plik i wklej ten kod:
<?php
/*
Plugin Name: Post Reading Duration Shortcode
Plugin URL: http://remicorson.com/
Description: Display the estimated time to read the post
Version: 0.1
Author: Remi Corson
Author URI: http://remicorson.com
Contributors: corsonr
Text Domain: rc_prds
Domain Path: languages
*/Po zapisaniu pliku powinieneś zobaczyć listę wtyczek na stronie wtyczek.
Krok 2: Utwórz krótki kod
Zasadniczo wtyczka zapewni prosty krótki kod bez atrybutu. Tekst zostanie umieszczony pomiędzy samymi znacznikami krótkiego kodu. Krótki kod będzie wyświetlany w interfejsie użytkownika, informując o czasie potrzebnym odwiedzającym na przeczytanie wpisu. Aby utworzyć krótki kod, użyj tego kodu:
/**
* Register the shortcode
*
* @access public
* @since 1.0
* @return void
*/
function rc_prds_add_reading_duration_shortcode( $atts, $content = null ) {
return '<span class="reading_duration">'.$content.'</span>';
}
add_shortcode("reading_duration", "rc_prds_add_reading_duration_shortcode");Możesz zapisać plik. Jeśli dodasz do postu lub strony krótki kod [reading_duration]Szacowany czas czytania: XX[/reading_duration], powinien on pokazywać „Szacowany czas czytania: XX” zamknięty w tagu „span”.
Kolejnym krokiem jest modyfikacja shortcode'u tak, aby wyświetlał realny szacowany czas potrzebny na przeczytanie strony lub wpisu, według z góry określonej liczby czytanych słów na minutę.
Aby to zrobić, musimy ewoluować kod krótkiego kodu. Musimy uzyskać identyfikator posta (aby pobrać liczbę słów w poście za pomocą str_word_count()) i musimy zdefiniować liczbę słów, które ludzie zwykle czytają w ciągu jednej minuty. Powiedzmy 200 słów na minutę.
/**
* Register the shortcode
*
* @access public
* @since 1.0
* @return void
*/
function rc_prds_add_reading_duration_shortcode( $atts, $content = null ) {
global $post;
// Get Post ID
$post_id = $post->ID;
// Words read per minute (you can set your own value)
$words_per_minute = 200;
// Get estimated time
$estimated_reading_time = rc_prds_get_post_reading_time( $post_id, $words_per_minute );
return '<span class="reading_duration">'.$content.' '.$estimated_reading_time.'</span>';
}
add_shortcode("reading_duration", "rc_prds_add_reading_duration_shortcode");Krok 3: Funkcja licznika
Jak widać, istnieje niezdefiniowana funkcja: rc_prds_get_post_reading_time(). Jest to funkcja, która zwróci szacunkowy czas potrzebny na przeczytanie wpisu. Stwórzmy to:
/**
* Get post reding time
*
* @access public
* @since 1.0
* @return void
*/
function rc_prds_get_post_reading_time( $post_id, $words_per_minute ){
// Get post's words
$content = get_the_content( $post_id );
$count_words = str_word_count( strip_tags( $content ) );
// Get Estimated time
$minutes = floor( $count_words / $words_per_minute);
$seconds = floor( ($count_words / ($words_per_minute / 60) ) - ( $minutes * 60 ) );
// If less than a minute
if( $minutes < 1 ) {
$estimated_time = __( 'Less than a minute', 'rc_prds' );
}
// If more than a minute
if( $minutes >= 1 ) {
if( $seconds > 0 ) {
$estimated_time = $minutes.__( 'min', 'rc_prds' ).' '.$seconds.__( 'sec', 'rc_prds' );
} else {
$estimated_time = $minutes.__( 'min', 'rc_prds' );
}
}
return $estimated_time;
}Zasadniczo funkcja zlicza liczbę słów w „get_the_content()”, a następnie liczy liczbę minut i sekund potrzebnych na przeczytanie posta. Ostatnia część to prosty sposób wyświetlenia prawidłowego komunikatu w zależności od wartości $minut i $sekund.
Moglibyśmy pójść dalej i dodać godziny potrzebne na przeczytanie wpisu, ale nie jestem pewien na 100%, czy jest to obowiązkowe!
Możesz teraz w pełni wykorzystać krótki kod, po prostu dodając:
[reading_duration]Estimated Reading Time:[/reading_duration]