ポストリーディング期間 WordPress ショートコード
数日前、Web サイトでページの上部に、ページを読むのにかかる推定時間という追加情報が表示されているのを見ました。私はそれが面白くて、WordPress ショートコードを使用して同様のものを作成したいと思いました。
とても簡単にできるので、始めてみましょう!
ステップ 1: プラグインを作成する
いつものように、プラグインを作成するので、wp-content/plugins の下に新しいフォルダーを作成し、「post-reading-duration-shortcode」という名前を付けます。それを開いて、「post-reading-duration-shortcode.php」というファイルを作成します。ファイルを開いて、次のコードを貼り付けます。
<?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
*/
ファイルを保存すると、プラグイン ページにプラグインのリストが表示されます。
ステップ 2: ショートコードを作成する
基本的に、プラグインは属性のない単純なショートコードを提供します。テキストはショートコード タグ自体の間にカプセル化されます。ショートコードは、訪問者が投稿を読むのに必要な時間をフロントエンドに表示します。ショートコードを作成するには、次のコードを使用します。
/**
* 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");
ファイルを保存できます。投稿またはページにショートコード [reading_duration]推定読書時間: XX[/reading_duration] を追加すると、「推定読書時間: XX」が「span」タグにカプセル化されて表示されます。
次のステップでは、1 分あたりに読み取られる事前定義された単語数に従って、ページまたは投稿を読むのに必要な実際の推定時間を表示するようにショートコードを変更します。
そのためには、ショートコードのコードを進化させる必要があります。投稿 ID を取得する必要があり (str_word_count() を使用して投稿内の単語数を取得するため)、人々が通常 1 分間に読む単語数を定義する必要があります。 1分間に200単語を言ってみましょう。
/**
* 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");
ステップ 3: カウンタ機能
ご覧のとおり、未定義の関数 rc_prds_get_post_reading_time() があります。これは、投稿を読むのに必要な推定時間を返す関数です。作成しましょう:
/**
* 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;
}
基本的に、この関数は「get_the_content()」で単語数をカウントし、投稿を読むのに必要な分数と秒数をカウントします。最後の部分は、$minutes と $秒の値に応じて正しいメッセージを表示する簡単な方法です。
さらに進んで、投稿を読むのに必要な時間を追加することもできますが、それが必須かどうかは 100% わかりません。
以下を追加するだけで、ショートコードを完全に使用できるようになります。
[reading_duration]Estimated Reading Time:[/reading_duration]