Okuma Sonrası Süre WordPress Kısa Kodu
Birkaç gün önce sayfanın üst kısmında biraz ekstra bilgi sağlayan bir web sitesi gördüm: sayfayı okumak için tahmini süre. Bunu komik buldum ve WordPress kısa kodunu kullanarak benzer bir şey oluşturmak istedim.
Bunu yapmak oldukça kolay, o yüzden başlayalım!
1. Adım: Eklenti Oluşturun
Her zamanki gibi bir eklenti oluşturacağız, bu nedenle wp-content/plugins altında yeni bir klasör oluşturun ve onu "okuma sonrası-duration-shortcode" olarak adlandırın, açın ve “post-reading-duration-shortcode.php” adlı bir dosya oluşturun. Dosyayı açın ve şu kodu yapıştırın:
<?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
*/Dosyayı kaydettikten sonra eklentiler sayfasında eklenti listesini görmelisiniz.
Adım 2: Kısa Kodu Oluşturun
Temel olarak eklenti, özelliği olmayan basit bir kısa kod sağlayacaktır. Metin, kısa kod etiketleri arasında kapsüllenecektir. Kısa kod, ziyaretçilerin yazıyı okumak için ihtiyaç duyduğu süreyi ön uçta görüntüleyecektir. Kısa kodu oluşturmak için şu kodu kullanın:
/**
* 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");Dosyayı kaydedebilirsiniz. Bir gönderiye veya sayfaya [reading_duration]Tahmini okuma süresi: XX[/reading_duration] kısa kodunu eklerseniz, "span" etiketinde kapsüllenmiş "Tahmini okuma süresi: XX" gösterilmelidir.
Bir sonraki adım, dakikada okunan önceden tanımlanmış kelime sayısına göre sayfayı veya gönderiyi okumak için gereken gerçek tahmini süreyi gösterecek şekilde kısa kodu değiştirmektir.
Bunu yapmak için kısa kod kodunun gelişmesini sağlamalıyız. Gönderi kimliğini almamız gerekiyor (str_word_count() kullanarak gönderideki kelime sayısını almak için) ve insanların genellikle bir dakika içinde okuduğu kelime sayısını tanımlamamız gerekiyor. Dakikada 200 kelime diyelim.
/**
* 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");Adım 3: Sayaç İşlevi
Gördüğünüz gibi tanımlanmamış bir işlev var: rc_prds_get_post_reading_time(). Bu, yazıyı okumak için ihtiyaç duyduğunuz tahmini süreyi döndürecek işlevdir. Hadi oluşturalım:
/**
* 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;
}Temel olarak işlev, "get_the_content()" içindeki kelime sayısını sayar, ardından gönderiyi okumak için gereken dakika ve saniye sayısını sayar. Son kısım, $dakika ve $saniye değerlerine bağlı olarak doğru mesajı görüntülemenin basit bir yoludur.
Daha da ileri gidebilir ve gönderiyi okumak için gereken saatleri ekleyebiliriz ancak bunun zorunlu olduğundan %100 emin değilim!
Artık kısa kodu yalnızca şunu ekleyerek tamamen kullanabilirsiniz:
[reading_duration]Estimated Reading Time:[/reading_duration]