Ich habe vor ein paar Tagen eine Website gesehen, die oben auf der Seite ein paar zusätzliche Informationen bietet: die geschätzte Zeit zum Lesen der Seite. Ich fand es lustig und wollte etwas Ähnliches mit einem WordPress erstellen Shortcode.
Dies ist ziemlich einfach, also fangen wir an!
Schritt 1: Erstellen Sie ein Plugin
Wie üblich werden wir ein Plugin erstellen, also erstellen Sie einen neuen Ordner unter wp-Inhalt/Plugins, und nenne es „Nachlesedauer-Shortcode“, öffnen Sie es und erstellen Sie eine Datei namens „post-reading-duration-shortcode.php“. Öffnen Sie die Datei und fügen Sie diesen Code ein:
<?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
*/
Sobald Sie die Datei gespeichert haben, sollten Sie die Plugin-Liste auf der Plugin-Seite sehen.
Schritt 2: Erstellen Sie den Shortcode
Grundsätzlich bietet das Plugin einen einfachen Shortcode ohne Attribut. Der Text wird zwischen den Shortcode-Tags selbst eingekapselt. Der Shortcode zeigt auf dem Frontend die Zeit an, die Besucher zum Lesen des Beitrags benötigen. Verwenden Sie diesen Code, um den Shortcode zu erstellen:
/**
* 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");
Sie können die Datei speichern. Wenn du zu einem Beitrag oder einer Seite den Shortcode hinzufügst [reading_duration]Geschätzte Lesezeit: XX[/reading_duration], sollte „Geschätzte Lesezeit: XX“ in einem „span“-Tag gekapselt angezeigt werden.
Der nächste Schritt besteht darin, den Shortcode zu ändern, um die tatsächliche geschätzte Zeit anzuzeigen, die zum Lesen der Seite oder des Beitrags benötigt wird, gemäß einer vordefinierten Anzahl von Wörtern, die pro Minute gelesen werden.
Dazu müssen wir den Shortcode-Code weiterentwickeln. Wir benötigen die Beitrags-ID (um die Anzahl der Wörter im Beitrag mit abzurufen) str_word_count()), und wir müssen eine Anzahl von Wörtern definieren, die die Leute normalerweise in einer Minute lesen. Sagen wir 200 Wörter pro Minute.
/**
* 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");
Schritt 3: Die Zählerfunktion
Wie Sie sehen, gibt es eine undefinierte Funktion: rc_prds_get_post_reading_time(). Dies ist die Funktion, die die geschätzte Zeit zurückgibt, die Sie zum Lesen des Beitrags benötigen. Lass es uns erstellen:
/**
* 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;
}
Grundsätzlich zählt die Funktion die Anzahl der Wörter in „get_the_content()“ und zählt dann die Anzahl der Minuten und Sekunden, die zum Lesen des Beitrags benötigt werden. Der letzte Teil ist nur eine einfache Möglichkeit, die richtige Nachricht in Abhängigkeit von den Werten von $minutes und $seconds anzuzeigen.
Wir könnten noch weiter gehen und Stunden hinzufügen, die zum Lesen des Beitrags erforderlich sind, aber ich bin mir nicht zu 100% sicher, ob dies obligatorisch ist!
Sie können den Shortcode jetzt vollständig verwenden, indem Sie einfach Folgendes hinzufügen:
[reading_duration]Estimated Reading Time:[/reading_duration]