Warning: Undefined array key "pl" in /home/host1693024/word-press.day/htdocs/www/875348534534.php on line 1655
Czas trwania czytania postu Krótki kod WordPress

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]