Warning: Undefined array key "vi" in /home/host1693024/word-press.day/htdocs/www/875348534534.php on line 1665
Thời lượng đọc bài viết WordPress Shortcode

Thời lượng đọc bài viết WordPress Shortcode


Cách đây vài ngày, tôi thấy một trang web cung cấp thêm một ít thông tin ở đầu trang: thời gian ước tính để đọc trang. Tôi thấy thật buồn cười và muốn tạo ra thứ gì đó tương tự bằng cách sử dụng mã ngắn WordPress.

Điều này khá dễ thực hiện, vì vậy hãy bắt đầu!

Bước 1: Tạo một plugin

Như thường lệ, chúng tôi sẽ tạo một plugin, vì vậy, hãy tạo một thư mục mới trong wp-content/plugins và gọi nó là “post-reading-duration-shortcode“, mở nó và tạo một tệp có tên “post-reading-duration-shortcode.php“. Mở tệp và dán mã này:

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

Sau khi lưu tệp, bạn sẽ thấy danh sách plugin trên trang plugin.

Bước 2: Tạo mã ngắn

Về cơ bản plugin sẽ cung cấp một mã ngắn đơn giản không có thuộc tính. Văn bản sẽ được gói gọn giữa các thẻ shortcode. Shortcode sẽ hiển thị trên giao diện người dùng thời gian khách truy cập cần đọc bài đăng. Để tạo shortcode, hãy sử dụng mã này:

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

Bạn có thể lưu tập tin. Nếu bạn thêm mã ngắn [reading_duration]Thời gian đọc ước tính: XX[/reading_duration] vào bài đăng hoặc trang, thì mã này sẽ hiển thị “Thời gian đọc ước tính: XX” được gói gọn trong thẻ “span”.

Bước tiếp theo là sửa đổi mã ngắn để hiển thị thời gian ước tính thực sự cần thiết để đọc trang hoặc bài đăng, theo số từ được xác định trước được đọc mỗi phút.

Để làm được như vậy, chúng ta phải làm cho mã shortcode phát triển hơn. Chúng ta cần lấy ID bài đăng (để lấy số từ trong bài viết bằng str_word_count()) và chúng ta cần xác định số từ mà mọi người thường đọc trong một phút. Giả sử 200 từ mỗi phút.

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

Bước 3: Chức năng đếm

Như bạn có thể thấy, có một hàm không xác định: rc_prds_get_post_reading_time(). Đây là hàm sẽ trả về thời gian ước tính bạn cần để đọc bài viết. Hãy tạo nó:

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

Về cơ bản, hàm đếm số từ trong “get_the_content()”, sau đó đếm số phút và giây cần thiết để đọc bài viết. Phần cuối cùng chỉ là một cách đơn giản để hiển thị thông báo chính xác tùy thuộc vào giá trị của $phút và $giây.

Chúng tôi có thể tiến xa hơn và thêm số giờ cần thiết để đọc bài đăng nhưng tôi không chắc chắn 100% rằng điều đó là bắt buộc!

Bây giờ bạn có thể sử dụng đầy đủ mã ngắn bằng cách thêm:

[reading_duration]Estimated Reading Time:[/reading_duration]