2021-03-22/2023-05-23

【簡単】WordPressでキャッシュ利用したい場合

【簡単】WordPressでキャッシュ利用したい場合

Autoptimizeなどキャッシュを作成してくれるプラグインはいろいろありますが、ここでは独自でキャッシュを利用する方法を紹介します。

なので、クエリーをキャッシュするより何か自分で実装した処理に使うといいでしょう。

私はAPIのリクエストに使用しました。短時間で何回も取得するのを避けたかったため。

WordPressのキャッシュ利用

WordPressでキャッシュ利用するには「Transients API」を使用します。「Options API」と似たようなものです。

使用するのは「set_transient」「get_transient」の二つです。

まず、「set_transient」のセットする方です。

$data = '例)APIにアクセスして取得したデータや加工したデータ';
// set_transient( string $transient, mixed $value, int $expiration );
set_transient( 'transient_api_data', $data, 60 * MINUTE_IN_SECONDS);

set_transientでは第一引数にtransient名を指定します。区別できる172文字以下の名前をしてしてください。Options APIだとoption名にあたります。

第二引数は格納するデータです。変数、配列、オブジェクトなど入れることができます。DB格納時のシリアル化は自動的に行われるので、配列やオブジェクトなどそのまま指定してOKです。

最後の引数には保持する時間です。秒単位で指定できます。デフォルトは0となり無期限です。キャッシュで無期限利用することは少ないと思いますし、無期限利用ならoptionの方がシンプルでしょう。

続いて「get_transient」で取得をします。

// get_transient( string $transient )
$data = get_transient( 'transient_api_data' );
// echo $data;
// 例)APIにアクセスして取得したデータや加工したデータ

取得する方はセットするときに指定したtransient名を指定することで取得できます。

指定したtransient名が存在しない場合はfalseが返ってきます。

指定したtransient名が存在していたが有効期限が切れていた場合にはtransient名のデータは破棄されfalseが返ってきます。

また、使用上多いのがif文と一緒に使う場合だと思います。

その場合には「===」を演算子使用しておくのが無難です。(0を設定している可能性などあるため)

if( get_transient( 'transient_api_data' ) === false ) {}

※備考

transientは「{$wpdb-prefix}_options」テーブル内に保管されています。

set_transientを使用すると二つのレコードが作られ、一つは格納するデータのレコードで、もう一つは有効期限のレコードです。

有効期限はUNIXタイムスタンプで管理されているようです。

直接使用することはないと思いますが、知っておいて損はないでしょう。

2020 KumaTechLab.