2026年5月20日
2026年5月20日
Query Monitorの使い方とWordPressパフォーマンス診断
はじめに
Query MonitorはWordPressの開発・デバッグに欠かせないプラグインです。ページ読み込み時のSQLクエリ・PHPエラー・HTTP API呼び出し・フック実行時間を管理画面のツールバーで即座に確認できます。
症状・原因
- WordPressページの表示が遅い原因を特定したい
- どのプラグインが重いSQLクエリを発行しているか調べたい
- PHPのWarning・Noticeエラーを開発環境で確認したい
- 特定のフック・フィルターが正しく動いているか確認したい
解決手順
ステップ1:Query Monitorをインストールする
wp plugin install query-monitor --activate
管理者アカウントでログイン時のみツールバーに表示されます。
ステップ2:管理バーでデータを確認する
ページを表示すると管理バーに「Query Monitor」が追加される:
表示内容:
→ クエリ数: 42 queries(SQLクエリ数)
→ 実行時間: 0.342s(ページ生成時間)
→ メモリ: 24.3MB(PHP メモリ使用量)
→ エラー: 2 errors(PHPエラー数)
クリックでパネルを展開:
→「データベースクエリ」タブ
→「PHPエラー」タブ
→「フック & アクション」タブ
→「HTTP API 呼び出し」タブ
ステップ3:重いSQLクエリを特定する
Query Monitor → データベースクエリ:
→「実行時間」列でソート → 遅いクエリを特定
→「コンポーネント」列で原因プラグイン/テーマを特定
→「呼び出し元」列でコードの場所を確認
重いクエリの例:
実行時間: 0.18s
SQL: SELECT * FROM wp_postmeta WHERE post_id IN (1,2,3,...)
コンポーネント: my-plugin/includes/functions.php:42
対処法:
// 遅いクエリの改善例: post_id IN (...) → posts_clauses フィルターで最適化
// または WP_Query のキャッシュを有効化
$query = new WP_Query([
'post_type' => 'product',
'posts_per_page' => 10,
'cache_results' => true, // クエリ結果をキャッシュ
'update_post_meta_cache' => true,
'update_post_term_cache' => true,
]);
ステップ4:PHPエラーをデバッグする
Query Monitor → PHPエラー:
→ エラーレベル: Warning / Notice / Deprecated
→ ファイル・行番号が表示される
→ コンポーネント: どのプラグイン/テーマが原因か
wp-config.php でのデバッグ設定:
// wp-config.php — 開発環境でのデバッグ有効化
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true); // wp-content/debug.log に記録
define('WP_DEBUG_DISPLAY', false); // 画面には表示しない(本番環境)
define('SAVEQUERIES', true); // SQLクエリを記録(QueryMonitor連携)
ステップ5:フック実行時間を確認する
Query Monitor → フック & アクション:
→ 各フック(init, wp_head, wp_footer等)の実行時間
→ 重いコールバックを特定
→「コンポーネント」で原因を絞り込む
HTTP API 呼び出し:
→ 外部APIへのリクエスト一覧
→ 実行時間・レスポンスコードを確認
→ 遅い外部API呼び出しがページ速度の原因になっていないか確認
ステップ6:WP-CLIでクエリを診断する
# Query Monitorの設定を確認
wp option get qm_settings --format=json
# デバッグログを確認
wp log list # WP CLIログ拡張が必要
# 手動でSQLクエリの実行計画を確認
wp db query "EXPLAIN SELECT * FROM wp_postmeta WHERE post_id = 123"
# インデックスの確認
wp db query "SHOW INDEX FROM wp_postmeta"
# wp_postmetaのレコード数(肥大化チェック)
wp db query "SELECT COUNT(*) FROM wp_postmeta"
注意事項
- Query Monitorは本番環境での利用は推奨しません。開発・ステージング環境でのみ有効化してください
SAVEQUERIESを有効にするとデータベース負荷が増加します- 管理者以外のユーザーにはQuery Monitorのパネルは表示されません
まとめ
Query Monitorはインストールするだけで管理バーにクエリ数・実行時間・エラー数が表示されます。重いSQLクエリはコンポーネント列で原因プラグインを特定し、cache_results の活用やインデックス追加で改善できます。