WordPress│カスタムフィールド値を自動保存するカスタマイズ

記事を読む目安時間などは本文の文字数から算出できますが、リライトするたびに表示時間を変更するのは大変ですよね?

そんな時は記事の保存時に値も保存することができます。

本記事ではそのカスタマイズ方法を紹介します。

目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

カスタムフィールド値を自動保存するカスタマイズ

やり方は簡単です。

わかりやすく解説するので、最後まで読んでみてください。

ちなみに自動保存する場合、カスタムフィールドの設置はACF(Advanced Custom Fields)のプラグインから設定することをお勧めします。そのほうが実装が簡単です。

カスタムフィールドの作成

まずはカスタムフィールドの値を作りましょう。

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' );

以上で記事を読む目安時間の実装が完了です。

まとめ

保存時にカスタムフィールドを更新するカスタマイズは、うまく使えばカスタムフィールドの入力の手間がかなり省けます。

気になった人はぜひ試してみてください。

目次