Tempoh Bacaan Pos Kod Pendek WordPress


Saya melihat beberapa hari yang lalu tapak web yang menyediakan sedikit maklumat tambahan di bahagian atas halaman: anggaran masa untuk membaca halaman. Saya mendapati ia lucu dan mahu mencipta sesuatu yang serupa menggunakan kod pendek WordPress.

Ini agak mudah untuk dilakukan, jadi mari kita mulakan!

Langkah 1: Buat Pemalam

Seperti biasa kita akan mencipta pemalam, jadi, buat folder baharu di bawah wp-content/plugins dan panggilnya "post-reading-duration-shortcode", bukanya dan buat fail yang dipanggil “post-reading-duration-shortcode.php“. Buka fail dan tampal kod 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
*/

Sebaik sahaja anda menyimpan fail, anda sepatutnya melihat penyenaraian pemalam pada halaman pemalam.

Langkah 2: Buat Kod Pendek

Pada asasnya pemalam akan menyediakan kod pendek mudah tanpa atribut. Teks akan dikapsulkan antara tag kod pendek itu sendiri. Kod pendek akan dipaparkan pada bahagian hadapan masa pelawat perlu membaca siaran. Untuk membuat kod pendek, gunakan kod 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 boleh menyimpan fail. Jika anda menambahkan pada siaran atau halaman kod pendek [reading_duration]Anggaran masa membaca: XX[/reading_duration], ia sepatutnya menunjukkan "Anggaran masa membaca: XX" yang terkandung dalam teg "span".

Langkah seterusnya ialah mengubah suai kod pendek untuk memaparkan anggaran masa sebenar yang diperlukan untuk membaca halaman atau siaran, mengikut bilangan perkataan yang telah ditetapkan dibaca setiap minit.

Untuk berbuat demikian, kita perlu membuat kod kod pendek berkembang. Kita perlu mendapatkan ID siaran (untuk mendapatkan semula bilangan perkataan dalam siaran menggunakan str_word_count()), dan kita perlu mentakrifkan beberapa perkataan yang biasa dibaca orang dalam satu minit. Katakan 200 patah perkataan seminit.

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

Seperti yang anda lihat terdapat fungsi yang tidak ditentukan: rc_prds_get_post_reading_time(). Ini ialah fungsi yang akan mengembalikan anggaran masa yang anda perlukan untuk membaca siaran. Mari menciptanya:

/**
 * 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 asasnya, fungsi mengira bilangan perkataan dalam "get_the_content()", kemudian mengira bilangan minit dan saat yang diperlukan untuk membaca siaran. Bahagian terakhir hanyalah cara mudah untuk memaparkan mesej yang betul bergantung pada nilai $minit dan $saat.

Kita boleh pergi lebih jauh, dan menambah jam yang diperlukan untuk membaca siaran tetapi saya tidak pasti pada 100% bahawa ia adalah wajib!

Anda kini boleh menggunakan kod pendek sepenuhnya dengan hanya menambah:

[reading_duration]Estimated Reading Time:[/reading_duration]