省エネ運転中

【WordPress】Transient(キャッシュ)の有効期限を取得・確認する方法

WordPressカスタマイズ

WordPressで一時的にデータを保管する際の機能としてTransientがありますが、キャッシュ処理の判定時などにキャッシュの有効期限を確認したい場合などがあるかと思います。

ここでは、WordPressのTransientの有効期限の取得方法について解説します。

set_transient()とget_transient()

WordPressのキャッシュ関連の関数にset_transient()とget_transient()関数があります。

Web APIやデータベースから取得したデータなどをTransient関数を使うことでデータをキャッシュとして一時的に保管することができます。

短時間で更新されにくいデータであればデータアクセスや処理の負荷、WebAPIへの繰り返しのアクセスを抑制することができるため、サイトの高速化やサーバーへの負荷軽減には欠かせない機能です。

Transientを操作する関数にはset_transient()とget_transient()、delete_transient()があり、set_transient()関数で情報の内容や有効期限の設定・保存を行うことができ、get_transient()関数で情報の内容を取得することができます。

get_transient()関数は、有効期限を過ぎたtransientに対してはfalseを返すため、シンプルな判定でキャッシュの利用、再取得などを処理することが可能です。

//キャッシュを確認
if (false === ($json = get_transient('json_001'))) {

  //キャッシュがなければ再取得して保存
  $json = get_my_json();
  set_transient( 'json_001', $json);
}

//処理を継続
...

Transientの利用自体はとてもシンプルなのですが、Transientの参照は値のみで、あと何日で有効期限が切れる、などの情報がそのままでは取得できません。

Transientの有効期限を取得する関数

Transientの有効期限を取得するにはTransientの内容を保存したWordPressのデータベースから直接取り出します。

以下の関数をfunctions.phpなどに記載します。

function get_transient_timeout($transient) {
    global $wpdb;
    $transient_timeout = $wpdb->get_col( "
      SELECT option_value
      FROM $wpdb->options
      WHERE option_name
      LIKE '%_transient_timeout_$transient'
    " );
    return ($transient_timeout) ? $transient_timeout[0] : false;
}

コメント

タイトルとURLをコピーしました