WordPress wpdb prepare 使い方|DB・キャッシュ・Cron

データベース・キャッシュとは|このカテゴリで分かること

このカテゴリは、WordPressで直接データベースを扱う $wpdb の関数、キャッシュ操作、WP-Cron による定期実行をまとめたものです。「WordPress wpdb prepare 使い方」で調べる安全なSQLの組み立てから、「WordPress wp_schedule_event」で調べる定期処理、テーブル作成の dbDelta までを扱います。

標準の関数で足りない処理を自作するプラグイン開発者や、速度改善でキャッシュを調べる人が対象です。

読む順番(おすすめの順路)

安全な取得、書き込み、キャッシュ、定期実行の順に読みます。

  1. $wpdb->prepare() の使い方|説明・引数・注意点:SQLの安全な組み立て。最初に必ず理解します。
  2. $wpdb->get_var() の使い方|説明・引数・注意点:単一の値の取得。
  3. $wpdb->get_row() の使い方|説明・引数・注意点:1行の取得。
  4. $wpdb->get_col() の使い方|説明・引数・注意点:1列の取得。
  5. $wpdb->get_results() の使い方|説明・引数・注意点:複数行の取得。
  6. $wpdb->esc_like() の使い方|説明・引数・注意点:LIKE検索の安全な扱い。
  7. $wpdb->insert() の使い方|説明・引数・注意点:行の追加。
  8. $wpdb->update() の使い方|説明・引数・注意点:行の更新。
  9. $wpdb->delete() の使い方|説明・引数・注意点:行の削除。
  10. $wpdb->query() の使い方|説明・引数・注意点:汎用のクエリ実行。
  11. dbDelta() の使い方|説明・引数・注意点:テーブルの作成と更新。
  12. wp_cache_set() の使い方|説明・引数・注意点:オブジェクトキャッシュへの保存。
  13. wp_cache_delete() の使い方|説明・引数・注意点:キャッシュの削除。
  14. wp_cache_flush() の使い方|説明・引数・注意点:全消去。影響範囲に注意が必要です。
  15. clean_post_cache() の使い方|説明・引数・注意点:投稿関連のキャッシュ整理。
  16. wp_schedule_event() の使い方|説明・引数・注意点:定期実行の登録。
  17. wp_schedule_single_event() の使い方|説明・引数・注意点:一度きりの予約。
  18. wp_next_scheduled() の使い方|説明・引数・注意点:重複登録の防止に使います。
  19. wp_clear_scheduled_hook() の使い方|説明・引数・注意点:予約の解除。
  20. wp_get_schedules() の使い方|説明・引数・注意点:利用できる間隔の確認。

押さえておきたいポイント(リサーチ)

developer.wordpress.org のリファレンスで確認できた内容です。

  • wpdb::prepare() は sprintf() に似た書式でSQLを安全に組み立てます。プレースホルダは %d(整数)、%f(小数)、%s(文字列)、%i(識別子)です。%i は WordPress 6.2.0 で追加されました。戻り値は文字列または null です。
  • wp_schedule_event() は 2.1.0 で追加され、引数は $timestamp、$recurrence、$hook、$args、$wp_error です。5.7.0 で $wp_error が追加されました。WP-Cron はサイトへのアクセスをきっかけに動くため、重い処理では、wp-config.php で DISABLE_WP_CRON を有効にしてサーバーの cron を使う方法が、関数ページの投稿ノートで紹介されています。
目的 主な関数
安全なSQL wpdb::prepare()
取得 get_var / get_row / get_results
書き込み insert / update / delete
定期実行 wp_schedule_event()

最新の仕様は公式で確認してください。

よくある疑問

Q. SQL インジェクション対策は何をしますか。
A. 値は必ず $wpdb->prepare() の使い方|説明・引数・注意点 を通します。LIKE を使う場合は $wpdb->esc_like() の使い方|説明・引数・注意点 も併用します。

Q. 定期実行が二重に登録されます。
A. wp_next_scheduled() の使い方|説明・引数・注意点 で確認してから wp_schedule_event() の使い方|説明・引数・注意点 を呼びます。

Q. キャッシュを消すとどうなりますか。
A. wp_cache_flush() の使い方|説明・引数・注意点 はサイト全体に影響します。個別の削除は wp_cache_delete() の使い方|説明・引数・注意点 を検討してください。

編集部の見解

直接SQLを書く前に、標準の関数やクエリクラスで済まないかを確認するのが基本だと考えます。それでも必要な場面では、prepare を通すことを例外なく習慣にしてください。WP-Cron は便利ですが、実行のタイミングが保証されない点を理解したうえで、時刻が厳密な処理にはサーバー側の cron を使う判断も必要でしょう。

出典(一次情報)

データベース・キャッシュ

$wpdb->prepare() の使い方|説明・引数・注意点

$wpdb->prepare() は、SQL文に値を安全に埋め込むためのメソッドです。SQLインジェクションの対策として必須です。
データベース・キャッシュ

$wpdb->get_var() の使い方|説明・引数・注意点

$wpdb->get_var() は、SELECT文を実行し、1つの値だけを取得するメソッドです。
データベース・キャッシュ

dbDelta() の使い方|説明・引数・注意点

dbDelta() は、テーブルを作成・更新する関数です。プラグイン有効化時のテーブル作成に使います。
データベース・キャッシュ

$wpdb->esc_like() の使い方|説明・引数・注意点

$wpdb->esc_like() は、LIKE検索の値に含まれる % や _ などのワイルドカードをエスケープするメソッドです。
データベース・キャッシュ

$wpdb->get_col() の使い方|説明・引数・注意点

$wpdb->get_col() は、SELECT文を実行し、1列分の値を配列で取得するメソッドです。
データベース・キャッシュ

$wpdb->get_row() の使い方|説明・引数・注意点

$wpdb->get_row() は、SELECT文を実行し、1行分の結果を取得するメソッドです。
データベース・キャッシュ

$wpdb->get_results() の使い方|説明・引数・注意点

$wpdb->get_results() は、SELECT文を実行し、結果の複数行を配列で取得するメソッドです。
データベース・キャッシュ

wp_cron() の使い方|説明・引数・注意点

wp_cron() は、WP-Cronの実行を開始する関数です。通常はWordPress本体が自動で呼び出します。
データベース・キャッシュ

wp_get_schedules() の使い方|説明・引数・注意点

wp_get_schedules() は、WP-Cronで使える実行間隔の一覧を返す関数です。
データベース・キャッシュ

wp_clear_scheduled_hook() の使い方|説明・引数・注意点

wp_clear_scheduled_hook() は、指定したフックのスケジュールを全て解除する関数です。