概要説明
アクセス毎にデータを取得、プログラムの実行を行わなくてよい場合はDBにキャッシュさせるカスタマイズ。キー、インターバールを各種設定ができるようにしているのでfunctions.phpに定義を追加しておくことで高速化に使用できます。プラグインを使わずに任意のタイミングでキャッシュをさせたいといった場合に活用できます。
コード – キャッシュ保存、キャッシュ取得
functions.php
/*----------------------------------------------------
DBキャッシュ キャッシュ保存・キャッシュ取得
----------------------------------------------------*/
if ( ! function_exists( 'get_db_cache' ) ) {
// キャッシュ取得(ない・期限切れは false)
function get_db_cache( $cache_key, $interval ) {
$key = 'fsdbc_' . md5( $cache_key );
$save_time = (int) get_option( $key . '-save-time' );
if ( ! $save_time || ( time() - $save_time ) >= (int) $interval ) {
return false;
}
$cache = get_option( $key . '-cache' );
return ( $cache === '' || $cache === false ) ? false : $cache;
}
// キャッシュ保存(autoload しない)
function set_db_cache( $cache_key, $data ) {
$key = 'fsdbc_' . md5( $cache_key );
update_option( $key . '-cache', $data, false );
update_option( $key . '-save-time', time(), false );
}
}
※ 2026 年 10 月に直しました。前の版はキーに自分の頭を付けていなかったため、下の削除の SQL で、名前が「-cache」で終わるほかのプラグインの設定まで消える恐れがありました。今は頭に fsdbc_ を付け、大きなデータでも全ページで読み込まれないように、autoload しない形で保存します。
WordPress には、期限つきで保存できる set_transient() / get_transient() もあります。新しく作るなら、こちらを使うほうがかんたんです。
使用方法 – 動作確認コード
// キャッシュ取得 ( キー, キャッシュ有効秒数 )
$cache = get_db_cache('cache_test', '86400');
if ( $cache === false ) {
$data = 'test';
// キャッシュ保存
set_db_cache('cache_test', $data);
// 動作検証用ログ debug.logに出力
error_log( 'Check Log: set_db_cache ' . $data );
} else {
$data = $cache;
// 動作検証用ログ debug.logに出力
error_log( 'Check Log: get_db_cache' . $cache );
}
- APIからの別サイトからのデータ取得を毎回行う必要がない場合はキャッシュさせる
- 人気ランキングなど重い処理の表示データをキャッシュさせる
キャッシュデータの確認、削除
簡易キャッシュの確認 SELECT option_name, option_value FROM `wp_options` WHERE `option_name` LIKE 'fsdbc\_%'; 簡易キャッシュの削除(このコードで作ったものだけ) DELETE FROM `wp_options` WHERE `option_name` LIKE 'fsdbc\_%';
※ wp_ は、使っているテーブルの頭(接頭辞)に合わせます。消す前にバックアップを取ってください。


