Durata della lettura del post Shortcode WordPress
Qualche giorno fa ho visto un sito web che fornisce alcune informazioni extra nella parte superiore della pagina: il tempo stimato per leggere la pagina. L'ho trovato divertente e volevo creare qualcosa di simile utilizzando uno shortcode WordPress.
Questo è abbastanza facile da fare, quindi iniziamo!
Passaggio 1: crea un plug-in
Come al solito creeremo un plugin, quindi crea una nuova cartella sotto wp-content/plugins e chiamala "post-reading-duration-shortcode", aprilo e crea un file chiamato "post-reading-duration-shortcode.php". Apri il file e incolla questo codice:
<?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
*/Una volta salvato il file dovresti vedere l'elenco dei plugin nella pagina dei plugin.
Passaggio 2: crea lo shortcode
Fondamentalmente il plugin fornirà un semplice shortcode senza attributo. Il testo verrà incapsulato tra gli stessi tag dello shortcode. Lo shortcode verrà visualizzato sul frontend per il tempo necessario ai visitatori per leggere il post. Per creare lo shortcode, utilizza questo codice:
/**
* 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");È possibile salvare il file. Se aggiungi a un post o una pagina lo shortcode [reading_duration]Tempo di lettura stimato: XX[/reading_duration], dovrebbe mostrare "Tempo di lettura stimato: XX" incapsulato in un tag "span".
Il passo successivo è modificare lo shortcode per visualizzare il tempo reale stimato necessario per leggere la pagina o il post, secondo un numero predefinito di parole lette al minuto.
Per fare ciò, dobbiamo far evolvere il codice shortcode. Dobbiamo ottenere l'ID del post (per recuperare il numero di parole nel post utilizzando str_word_count()) e dobbiamo definire un numero di parole che le persone solitamente leggono in un minuto. Diciamo 200 parole al minuto.
/**
* 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");Passaggio 3: la funzione contatore
Come puoi vedere, c'è una funzione non definita: rc_prds_get_post_reading_time(). Questa è la funzione che restituirà il tempo stimato necessario per leggere il post. Creiamolo:
/**
* 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;
}Fondamentalmente, la funzione conta il numero di parole in “get_the_content()”, quindi conta il numero di minuti e secondi necessari per leggere il post. L'ultima parte è solo un modo semplice per visualizzare il messaggio corretto a seconda dei valori di $minuti e $secondi.
Potremmo andare oltre, e aggiungere le ore necessarie per leggere il post ma non sono sicuro al 100% che sia obbligatorio!
Ora puoi utilizzare completamente lo shortcode semplicemente aggiungendo:
[reading_duration]Estimated Reading Time:[/reading_duration]