【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()

参考サイトなど

コメント投稿コメント投稿欄を開く

コメントは項目欄(*は必須項目)を入力し、「コメントを送信」ボタンをクリックしてください。 (メールアドレスは公開されることはありません。コメントの公開は承認制となります。)

また、多忙によりコメントには返信できない場合があります。

Twitterで返信する場合はこちらから。