Kode Pendek WordPress Durasi Bacaan Posting


Beberapa hari yang lalu saya melihat sebuah situs web yang memberikan sedikit informasi tambahan di bagian atas halaman: perkiraan waktu untuk membaca halaman. Saya menganggapnya lucu dan ingin membuat sesuatu yang serupa menggunakan kode pendek WordPress.

Ini cukup mudah dilakukan, jadi mari kita mulai!

Langkah 1: Buat Plugin

Seperti biasa kita akan membuat plugin, jadi, buat folder baru di bawah wp-content/plugins, dan beri nama “post-reading-duration-shortcode“, buka, dan buat file bernama “post-reading-duration-shortcode.php“. Buka file dan tempel kode ini:

<?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
*/

Setelah Anda menyimpan file, Anda akan melihat daftar plugin di halaman plugin.

Langkah 2: Buat Kode Pendek

Pada dasarnya plugin akan memberikan shortcode sederhana tanpa atribut. Teks akan dienkapsulasi di antara tag kode pendek itu sendiri. Kode pendek akan ditampilkan di bagian depan waktu yang dibutuhkan pengunjung untuk membaca postingan. Untuk membuat kode pendek, gunakan kode ini:

/**
 * 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");

Anda dapat menyimpan file tersebut. Jika Anda menambahkan kode pendek [reading_duration]Perkiraan waktu membaca: XX[/reading_duration] ke postingan atau halaman, maka akan muncul “Perkiraan waktu membaca: XX” yang dikemas dalam tag “span”.

Langkah selanjutnya adalah memodifikasi kode pendek untuk menampilkan perkiraan waktu sebenarnya yang diperlukan untuk membaca halaman atau postingan, sesuai dengan jumlah kata yang dibaca per menit yang telah ditentukan.

Untuk melakukannya, kita harus membuat kode shortcode berkembang. Kita perlu mendapatkan ID postingan (untuk mengambil jumlah kata dalam postingan menggunakan str_word_count()), dan kita perlu menentukan jumlah kata yang biasanya dibaca orang dalam satu menit. Katakanlah 200 kata per menit.

/**
 * 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");

Langkah 3: Fungsi Penghitung

Seperti yang Anda lihat, ada fungsi yang belum ditentukan: rc_prds_get_post_reading_time(). Ini adalah fungsi yang akan mengembalikan perkiraan waktu yang Anda perlukan untuk membaca postingan. Mari kita buat:

/**
 * 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;
}

Pada dasarnya, fungsinya menghitung jumlah kata di “get_the_content()”, lalu menghitung jumlah menit dan detik yang diperlukan untuk membaca postingan. Bagian terakhir hanyalah cara sederhana untuk menampilkan pesan yang benar tergantung pada nilai $menit dan $detik.

Kita bisa melangkah lebih jauh, dan menambahkan jam yang diperlukan untuk membaca postingan tersebut, tetapi saya tidak yakin 100% bahwa itu wajib!

Anda sekarang dapat menggunakan kode pendek sepenuhnya hanya dengan menambahkan:

[reading_duration]Estimated Reading Time:[/reading_duration]