【WordPress】取得したデータをデータベースにキャッシュする例|一時保存・Transients API

WordPressでサイトを作成していると、WP_QueryやWeb APIを利用する際など、データを取得する回数を減らし、データをキャッシュしたい場合があると思います。
今回は、そのような場合に利用できる例となり、取得したデータを、データベースにキャッシュ(一時保存)させます。
取得したデータをデータベースにキャッシュ(一時保存)する例
WordPressでは、取得したデータをデータベースにキャッシュさせる方法として、Transients APIを利用する方法があります。
以下、そのTransients APIを利用した例となり、外部サイトのデータを文字列として、データベースへ一時的に保存します。
<?php
// 保存したデータを取得する
$data = get_transient( 'example_data' );
// 保存したデータがない場合は、データをセットして保存
if ( false === $data ) {
$url = 'example.com/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
$data = file_get_contents( $url );
set_transient( 'example_data', $data, 4*HOUR_IN_SECONDS );
}
// xmlをオブジェクトとして利用する場合
$xml = simplexml_load_string( $data );
?>
上記例では、まず、get_transient関数で保存したデータを取得します。
そして、データがない場合に、外部サイトのデータをfile_get_contents関数で読み込み、set_transient関数を使いデータベースへ4時間保存しています。
file_get_contents関数以外で外部データを読み込む場合
今回の例では、外部データを読み込む際にfile_get_contents関数を利用しましたが、リクエスト送信時のオプションの指定や、例外処理を実装して外部データを取得する方法もあります。
詳しくは、以下のリンク先を参考にしてみてください。
Transients APIについて
Transients APIでは、以下の3つの関数を用いて、一時的にデータベースへ保存するデータを管理します。
データを保存|set_transient()
set_transient関数は、パラメータで指定したデータを、一時的にデータベースへ保存します。
パラメータ
set_transient( $transient, $value, $expiration );
- $transient
- 保存するデータの識別名を指定
- $value
- 保存するデータを指定
- $expiration
- 保存する秒数を指定。WordPressの時間の定数が利用可能
また、WordPressの時間の定数については、以下のリンク先を参考にしてみてください。
データを取得|get_transient()
get_transient関数は、データの識別名をパラメータに指定し、そのデータを取得します。データがない場合は false を返します。
パラメータ
get_transient( $transient );
- $transient
- set_transient関数で指定した識別名を指定
データを削除|delete_transient()
delete_transient関数は、データの識別名をパラメータに指定し、そのデータを削除します。
パラメータ
delete_transient( $transient );
- $transient
- set_transient関数で指定した識別名を指定
マルチサイト間でデータを扱う場合
マルチサイト間でデータを扱う場合には、以下の関数を利用します。また、パラメータは、それぞれの上記関数と同じとなります。
データの保存 | set_site_transient() |
データの取得 | get_site_transient() |
データの削除 | delete_site_transient() |