記事を読む目安時間などは本文の文字数から算出できますが、リライトするたびに表示時間を変更するのは大変ですよね?
そんな時は記事の保存時に値も保存することができます。
本記事ではそのカスタマイズ方法を紹介します。
目次
カスタムフィールド値を自動保存するカスタマイズ
やり方は簡単です。
わかりやすく解説するので、最後まで読んでみてください。
カスタムフィールドの作成
まずはカスタムフィールドの値を作りましょう。
ACF(Advanced Custom Fields)のプラグインを入れて、
readtimeというカスタムフィールドを作成します。
記事を読む目安時間の計算式
記事を読む目安時間の計算式はわいひらさんのコードを使わせていただきました。
600文字あたり1分換算です。
functions.phpに下記のコードを記載しましょう。
function get_time_to_content_read($content){
$count = mb_strlen(strip_tags($content));
if ($count == 0) {
return 0;
}
$minutes = floor($count / 600) + 1;
return $minutes;
}
記事保存時に記事を読む目安時間を保存する
上記の数字をsave_postのフックを使って、記事保存時にカスタムフィールドに保存するようにします。
functions.phpに下記のコードを記載しましょう。
function save_read_time( $post_id ) {
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
return;
if ( !current_user_can( 'edit_post', $post_id ) )
return;
$post_content = get_post_field( 'post_content', $post_id );
$read_time = get_time_to_content_read( $post_content );
update_post_meta( $post_id, 'readtime', $read_time );
}
add_action( 'save_post', 'save_read_time' );
以上で記事を読む目安時間の実装が完了です。
まとめ
保存時にカスタムフィールドを更新するカスタマイズは、うまく使えばカスタムフィールドの入力の手間がかなり省けます。
気になった人はぜひ試してみてください。