Plugin Checkで「Use of a direct database call is discouraged.」と出た時の対処(phpcsエラーへの対処)

公開日:2025(令和7)年9月6日/最終更新日:

WordPress Trouble Shooting and Repair | Personal WP Customization Notes (PWCN)

【景品表示法に基づく表記】ページ内のコンテンツには、商品プロモーションが含まれています

$wpdbを使用してデータベース内のデータとのやり取りをするためのコードを書いてPlugin Checkのセキュリティ項目で懸念事項がないかを検査すると以下のWARNING(警告)が表示されることがあります。

  • Use of a direct database call is discouraged.
  • Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete().

日本語にするとそれぞれ以下のように書かれています。

  • 直接データベース呼び出しの使用は推奨されません。
  • キャッシュなしの直接データベース呼び出しが検出されました。wp_cache_get() / wp_cache_set() または wp_cache_delete() の使用を検討してください。

そもそも$wpdbはグローバル変数だし、特に記述はない..といろいろ調べていたら、以下のようにすれば警告は出なくなるようです。

まずは元のコード(実際に書いている例)

$table_exists = $wpdb->get_var("SHOW TABLES LIKE '$table_name'");

この行の直上に以下のコメントを追加

// phpcs:ignore WordPress.DB.DirectDatabaseQuery

以下が完成形

// phpcs:ignore WordPress.DB.DirectDatabaseQuery
$table_exists = $wpdb->get_var("SHOW TABLES LIKE '$table_name'");

このコメント文のを日本語にすると「phpcs:WordPress.DB.DirectDatabaseQuery を無視する」と書かれていいます。

そしてこのコメント文は、phpcs – PHP CodeSnifferというコードチェックツールが不正な記述がありますよ!と警告を出しているものに対して、正しい書き方しているから無視してくださいねというおまじないのようなものです。

つまり$wpdbを使ったデータベースとのやり取りのコードで不備がなければ直情におまじないを追加しておけばよいということなんですね。

「キャッシュなしの直接データベース呼び出しが検出されました。wp_cache_get() / wp_cache_set() または wp_cache_delete() の使用を検討してください。」については直接やり取りするよりもキャッシュを使った方が処理が速いかも知れないよ!と教えてくれているもので、「直接データベース呼び出しの使用は推奨されません。」とセットで表示されますから、データのキャッシュ処理をする必要のない処理であることが確実ならおまじないを追加すれば消えます。

単純にコメント文なので、プログラムの動作自体に影響はないと思いますが、追加したら一応動作チェックをしましょう。

phpcs – PHP CodeSnifferについて詳しく知りたい方は以下のページがとても参考になります。

phpcsのおさらい: コードのチェックと自動整形を使って快適なWordPressテーマ・プラグイン開発をしよう その1

その他の警告に対する対処方法の例

ここまでは「Use of a direct database call is discouraged.」という指摘があり、これはphpcs – PHP CodeSnifferが出しているものということを紹介し、無視するためのコードを紹介しました。

これは他のエラーとして表示されるものにも同様に適用できますので、コードに誤りがない、承知していてそのコードにしていることが確実な場合のみ、以下のようにして無視する措置をしていきます。

ここで例として挙げるのは「Scripts must be registered/enqueued via wp_enqueue_script()」というエラー。

該当箇所のプログラムは、設定画面で設定した値をスクリプトの中に含めフッターに出力するというもので、受け取る変数はきちんとエスケープしてあるので問題はないというケースでした。

タイプが「エラー」とはなっていますが意図したものであれば無視しても構わない内容です。

Plugin Checkで「Use of a direct database call is discouraged.」と出た時の対処(phpcsエラーへの対処)|Personal WP Customization Notes (PWCN)

分かっているのにPlugin Checkの際に毎回表示されるのは、他の重要な項目を見落とす可能性もあるので表示されないようにしておきたいと無視させることにしました。

そこで、上図で出ている「WordPress.WP.EnqueuedResources.NonEnqueuedScript」を無視するように、以下のようにコメント文を作ります。

// phpcs:ignore WordPress.WP.EnqueuedResources.NonEnqueuedScript

もうお分かりですね、「phpcs:ignore 」の後に上図で赤枠にしている「ソースコード」列の文字列を付け足すだけです。

これを該当のプログラムの直上に追記すれば、その部分がphpcsによってエラー判定されるのを回避し、チェックしても表示されなくなります。

ただもう一度書いておきますが、コードをもう一度精査して、コードに誤りがない、承知していてそのコードにしていることが確実な場合のみ無視するようにしてくださいね。

Lolipop ServerMoshimo Ad x-serverMoshimo Ad

WordPress Customize Ideas | Personal WP Customization Notes (PWCN)
Plugin Checkで「Using exclusionary parameters, like post__not_in, in calls to get_posts() should be done with caution」と指摘されるのはなぜ、対策方法は