WordPressデバッグ:エッセンシャルガイド

公開: 2021-02-11

WordPress開発者のレベルに関係なく、常に直面する問題が1つあります。それはバグです。 最も熟練した開発者でさえ、バグを発生させない方法で一貫してコーディングすることはできません。 実際のところ、WordPressをデバッグすることで、プラットフォームについてさらに学ぶことができます。

以前にプログラミングの経験がある場合は、コンパイル時または実行時にエラーが発生した可能性があります。 タオルを投げてプロジェクトを投げない限り、コードを実行して問題を追跡するのに時間を費やしている可能性があります。 WordPressのダイナミクスは同じです。

一般的なプログラミング言語でプログラミングする場合とは異なり、WordPressのエラーは単にページに印刷されるだけではありません。 これは、デバッグログにデータベースへの資格情報などの機密情報が含まれていることが多いためです。 代わりに、WordPressはそれらのログを、一般にアクセスできないサーバー上のファイルにドロップします。

幸いなことに、米陸軍によって開発された30トンの重さのコンピューターとは異なり、これを達成するためにマシンから文字通り死んだバグを取り除く必要はありません! いくつかのコンテキストができたので、WordPressのデバッグプロセスに何が入るのかをより技術的に見てみましょう。

WordPressデバッグの説明

ご存知かもしれませんが、WordPressはPHPを使用して開発されています。 つまり、デバッグに関する公式のWordPressガイドと公式のPHPデバッグガイドは、その過程で役立つ優れたリソースになるということです。

デバッグするには、WordPressでグローバルPHP変数を定義する必要があります。 次のセクションでは、その方法について詳しく説明します。

PHPのデバッグプロセスがWordPressのデバッグプロセスとどのように異なるかを区別することが重要です。 バニラPHPでは、デフォルトで2種類のエラーのみが表示されます。 1つは「致命的なエラー」です。つまり、ページを読み込めないほど深刻です。 もう1つは、「重大な致命的なエラー」が発生した場合に、ユーザーに空白のページを表示することです。 言い換えると、PHPは、エラーメッセージ全体を印刷するとセキュリティリスクが発生する可能性があることを認識しています。 これらの設定は、PHP自体で簡単に変更できます。

一方、WordPressは、デバッグに関しては少し言葉遣いがあります。 WordPressのデバッグを有効にし、カスタマイズしない場合は、あらゆるレベルのエラー、警告、さらには開発者向けの有益な項目が表示されます。 つまり、致命的なエラーから、JavaScriptのセクションを最適化する方法に関する技術的なメッセージまですべてが表示されます。 これは開発者にとって非常に役立ちますが、ユーザーに表示するのに最適なコンテンツではない可能性があります。

もう1つのユニークな機能は、非推奨になったWordPress固有のPHP関数について通知されることです。 非推奨になった機能は、現在も機能する可能性がありますが、将来的にはサポートが終了します。 これは通常、同じプロセスを実行するためのより良い、より速い方法があることを意味します。

WordPressのデバッグに興奮していない可能性があることは承知していますが、機能的なブログやサイトを維持したい場合は重要です。 ただし、ファイルの編集を開始する前に、信頼できるWordPressバックアッププラグインを最初に使用してください。 このようにして、誤ってサイトを操作不能にした場合でも、数回クリックするだけですべてを復元できます。

それでは、どのようにローリングできるかを見てみましょう!

WordPressでデバッグを有効にするにはどうすればよいですか?

WordPressのデバッグプロセスを開始するには、数行のPHPが必要です。

お気に入りのテキストエディタを起動します(お気に入りのテキストエディタがWindowsのメモ帳でない限り)。 Notepad ++は、ほとんどすべてのプログラミング言語をサポートする、一般的に使用されているオープンソースのテキストエディタです。

次に、wp-config.phpファイルのコピーをダウンロードします。 元のファイルを編集しないでください! 完了したら、変更したバージョンをアップロードするだけです。

テキストエディタでwp-config.phpを開いたら、次のコード行を追加する必要があります。 まず、それを検索して、まだ持っていないことを確認します。 同じ変数を2回定義すると、PHPは非常に不幸になります。

 define( 'WP_DEBUG', true );

このコード行はすべて、WP_DEBUGと呼ばれるグローバルPHP変数をブール値trueに設定します。

同様に、WordPressのデバッグ機能をオフにしたい場合は、反対のコード行を入力するだけです。

 define( 'WP_DEBUG', false );

これによりデバッグがオンになりますが、出力される情報を見つける方法がわからない場合はあまり役に立ちません。

WordPressのデバッグログはどこにありますか?

この質問には技術的に2つの答えがあり、正確な答えは選択によって異なります。

すでに述べたように、1つの方法はdefine( 'WP_DEBUG'、true);にドロップすることです。 これは、デフォルトのWordPressデバッグログ設定を使用します。ファイルが存在しない場合は、wp-content / debug.logの場所にファイルが自動的に作成されます(存在する場合は追加されます)。

ただし、別の場所に配置する必要がある理由はいくつかあります。 たとえば、サードパーティのデバッグツールがアクセスできる場所に配置したい場合があります。 デバッグログの配置場所をカスタマイズするには、次のようにデバッグを有効にします。

 define( 'WP_DEBUG_LOG', '/best-wp-dev/errors.log' );

WordPressのデバッグログの説明

WordPressデバッグログの情報の詳細レベルは、設定方法によって異なります。 追加の変更を加えずに単に有効にすると、エラーが発生したり、非推奨の関数を使用したり、最適ではなかったりするほとんどすべてのイベントがログに記録されます。

WordPressはPHPの上に構築されているため、ログにはすべてのPHPエラーと警告がスローされます。 また、各イベントに関連付けられている日付、時刻、およびIPアドレスも含まれます。 残念ながら、PHPの(非常に)詳細な出力は、コードのスタイリングが気に入らない、データ検証を強化する必要があると感じるなど、多くのことについても見ることができます。

特にWordPressのデバッグを始めたばかりの人にとって、ログファイルを見るのは非常に圧倒される可能性があります。 ただし、必要な項目はごくわずかであることを覚えておく必要があります。

デバッグとロギング

それらは同じ目標を達成することを目的としていますが、デバッグとロギングの違いを理解することが重要です。 言い換えると、行define( 'WP_DEBUG'、true); 行define( 'WP_DEBUG_LOG'、true);とはまったく異なることを行います。

いかなる場合でも、define( 'WP_DEBUG'、true);を使用しないでください。 一般に公開されているサイト。 このコマンドは、単独で使用する場合、単にメッセージをデバッグ出力します。 これは何もログに記録せず、サイトからデータを盗むために使用される可能性のある情報を出力します。 これがオンになっていないことを確認することは、堅実なWordPressセキュリティプラグインと組み合わせて、試みられたサイバー攻撃の大部分を阻止します。

iThemesセキュリティ(以前のBetter WP Security)

セキュリティを危険にさらすことなくWordPressをデバッグする

もちろん、定期的にサイトをデバッグする必要があります。 ただし、wp-config.phpファイルからコード行を絶えず追加および削除したくない場合があります。

プロセスを考えると、最初に一般的なデバッグを有効にする必要があります。 次に、エラーをログに記録して修正できるようにする必要があります。 ただし、これらのエラーを一般に公開したくはありません。 標準のPHPエラーとWordPress固有のエラーの両方が表示されないようにする必要があることに注意してください。

安全なWordPressデバッグコードのサンプル

上で概説したプロセスを使用して、サイトの安全なデバッグを開始できる4行のコードを次に示します。

 define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( 'WP_DEBUG_DISPLAY', false ); @ini_set( 'display_errors', 0 );

上記の最初の3行は、WordPressが注目するグローバルPHP変数を設定しているだけです。 デバッグを可能にし、ログ機能を設定してから、WordPress固有のエラーをオフにします。

4行目はレフトフィールドから出てきたように見える可能性があります! この行は、WordPressで処理されないPHPエラーに対処するためのものです。 これは、悪意のあるユーザーが機密サイト情報にアクセスしないようにするための最後の基盤です。

WordPressのデバッグエラーを修正するにはどうすればよいですか?

多くの場合、開発者は、私たちが調べた4行のコードを使用します。 データベース接続の失敗などのエラーが発生しますが、デバッグログにはそれに関する情報はありません。 これは、WordPressにはデバッグ方法ごとに異なるグローバルPHP変数があるためです。

WordPressを適切にデバッグするために、wp-config.phpファイルにさらに数行追加する必要があるいくつかのシナリオを見てみましょう。

WordPressJavaScriptのデバッグ

WordPressサイトをお持ちの場合、JavaScriptを使用している可能性が非常に高くなります。 新しい開発者にとって、これは本質的にサイトのインタラクティブな要素を強化する言語です。 JavaScriptは、デバッグが非常に面倒であることで有名です。 これは、最近のサイトではJavaScriptの上にフレームワークが使用されることが多く、警告やエラーメッセージがさらに複雑になるためです。

残念ながら、WordPressJavaScriptのデバッグを困難にしているのはそれだけではありません。 JavaScriptには、非同期または「AJAX」と通常のJavaScriptの2つの基本的な形式があります。 通常のJavaScriptは直線的に動作します。 終了する前に1つの関数を実行するまで、1つの関数を実行しません。 これはWebの初期の頃にはうまくいったかもしれませんが、Webアプリケーションではうまくいきません。

一方、AJAXはWordPressサイトのバックグラウンドで動作します。 JavaScript関数を実行してその出力を待つことができますが、他の関数の実行を妨げることはありません。 多くの場合、サイトがロックされないようにする必要があります。

WordPressが別のPHPグローバル変数を使用してスクリプトをデバッグしたいという理由は、このデバッグ方法が大量のデータを出力するためです。

WordPressが別のPHPグローバル変数を使用してスクリプトをデバッグしたいという理由は、このデバッグ方法が大量のデータを出力するためです。 また、JavaScriptとCSSはクライアント側で実行され、PHPはサーバー側で実行されるためです。 JavaScriptとCSSが原因でWordPressが遭遇するすべてのエラーを出力するには、次の行を追加するだけです。

 define( 'SCRIPT_DEBUG', true);

これにより、JavaScriptとCSS(スタイルシート)の両方のエラーが表示されます。 また、これらのより複雑なAJAX操作にも役立ちます。

データの問題の修正

ほとんどすべてのWebサイトは、データベースから情報を取得します。 WordPressにはいくつかのデータベースがあります。 データベースを別々のサーバーに保存するサイトもあれば、同じサーバーに保存するサイトもあります。 すべての構成が異なるため、データベース接続で問題が発生する可能性が常にあります。

WordPressがデータベースに接続できなかったことを示すエラーメッセージが表示された場合、またはデータが正しくプルされていないことに気付いた場合は、おそらくデバッグする必要があります。 標準のWordPressデバッグ変数を使用するだけで、データベース関連のエラーが発生したときに何もログに記録されないことに気付くでしょう。

これは、WordPressがデータベース関連のエラーを他のすべてのエラーから分離するためです。 データベースのエラーメッセージには機密情報が含まれていることが多く、WordPressの開発者は、誤って個人情報を公開しないようにしたいと考えていました。

WordPressデータベースの問題のデバッグを開始するには、wp-config.phpファイルにさらに別の行を追加する必要があります。

 define( 'SAVEQUERIES', true );

データベースのデバッグに飛び込む

他のグローバルなWordPressデバッグ変数とは異なり、これには特別な注意を払う必要があります。 「SAVEQUERIES」は、すべてのクエリが実行され、その結果が返されることを確認することをWordPressに通知します。 これにより、サイト全体のパフォーマンスが大幅に低下します。 ピーク時にサーバーでこれを実行しないように注意し、不要になったらすぐにオフにしてください。

また、出力の保存方法も少し異なります。 WordPressは、データベースのデバッグ情報を表示するためにアクセスする必要がある文字列のPHP配列を使用します。 これは、$ wpdbと呼ばれるPHPグローバル変数と、querysと呼ばれるメンバー配列にあります。 $ wpdb-> queriesの内容を印刷することでアクセスできます

WordPressプラグインのデバッグ

他のプラットフォームに対するWordPressの主な利点の1つは、ほぼすべてを実行できるプラグインの豊富なライブラリです。 あなたはこれを読んでいて、ファイルの内容を絶えず変更する必要があるというロジスティクスについてすでに頭痛の種になっているかもしれません。 ありがたいことに、いくつかのプラグインはWordPressのデバッグに役立ちます! そよ風を作る2つの特に人気のあるものがあります。

WPデバッグ

WordPressサイトにある、これは最も有名なWordPressデバッグプラグインの1つです。 これは基本的に、すでに説明したプロセスを自動化します。 ダッシュボードから数回クリックするだけで、サイトでこれらすべてのPHPグローバル変数のオンとオフを切り替えることができます。

このプラグインをインストールすると、それが依存する一連のプラグインもインストールされます。 全体として、それらはあなたにログを記録させ、あなたが遭遇したエラーを解釈するのを助けます。

このツールはデバッグプロセスを有効にするのに最適ですが、独自のプラグインをデバッグし、データベース関連のWordPressデバッグ情報を簡単に確認するには、別のプラグインも必要です。

デバッグバー

その名前が示すように、デバッグバーはWordPressサイトの管理パネル上の単なるバーです。 WPデバッグツールと組み合わせて使用​​できます。

より高度な開発者向けのツールがあり、キャッシュ、出力されたクエリ、クエリの結果、およびより高度な情報を表示できます。 前述のように、WordPressはすべてのデータベースデバッグ情報をPHPグローバル変数にドロップします。

その情報を実際に表示するには、カスタムPHPファイルでその配列を反復処理する必要があります。 このプラグインはあなたに簡単な代替手段を提供します。 このすべての情報を、非常に読みやすく理解しやすい形式で印刷します。 データベース呼び出しを最適化する方法に関するヒントも提供します。

ボーナスコンテンツを入手する:WordPressバックアッププラグインを選択するための10の機能
ここをクリック

WordPressテーマのデバッグ

WordPressテーマのデバッグには、通常、スクリプトに関するPHPグローバル変数の有効化が含まれます。 これは、テーマがクライアント側のJavaScriptとCSSを利用しているためです。

まず、自分が作成したテーマであることを確認します。 問題が発生しているサードパーティのテーマの場合は、そのテーマの作成者に連絡する必要があります。 干し草の山から針を見つけて自分でやろうとするのはかなり難しいでしょう!

独自のテーマの場合は、デバッグを有効にするために説明した手順に従っていることを確認してください。 バグに気付くようなアクションを実行します。 F12キーを押して、Webブラウザー内で開発者コンソールを有効にすることもできます。 これにより、プロセスに役立つクライアントレベルのエラーメッセージがさらに表示されます。

エラーにつながるテーマでアクションを実行した後、ログを参照してください。 エラーの原因に関する詳細情報がそこにあるはずです。 すべてを通常の状態に戻すには、JavaScriptやCSSを少し調整するだけで済む可能性があります。

WordPressの重大なエラーのデバッグ

プラグイン、テーマ、またはその他のカスタムコンテンツがエラーを生成して、WordPressサイトが失敗した場合、サイトは失敗に関する電子メールを送信する必要があります。 特に新しいウェブマスターにとって、これは苦痛を伴う可能性があります。

この一連の手順に従うだけで、非常に短い時間で問題を解決できるため、心配する必要はありません。

  1. WordPressデバッグモードがオンになっていることを確認してください。
  2. エラーログにアクセスします。 致命的なエラーに関する詳細情報が含まれている必要があります。 その場合は、正確なエラーコードをオンラインで検索してください。
  3. PHPのバージョンを確認してください。 WordPressが現在必要としているものではない場合は、サーバーが使用しているPHPバージョンを更新するだけで問題が解決する可能性があります。
  4. それでも運がない場合は、プラグインを確認してください。 それらをすべてオフにします。 サイトが機能する場合、それはプラグインが問題を引き起こしたことを意味します。 問題のあるプラグインが見つかるまで、それらを1つずつ確認してください。 それを書いた人に連絡して、修正するように依頼してください。
  5. それでも問題が見つからない場合は、テーマに関連する問題である可能性があります。 現在のテーマをデフォルトのWordPressテーマに戻してみてください。 サイトが機能する場合は、作成者が問題を解決するまで、テーマを一時的に変更する必要があります。
  6. サイコロはありませんか? あなたのエラーをWordPress開発者フォーラムに載せてください。 喜んでお手伝いしてくれるユーザーはたくさんいます。

まとめ

WordPressをデバッグすると、発生した多くの問題を解決するのに役立ちます。 どのプラグインに問題があるのか​​、またはテーマにどのような問題があるのか​​を知ることができます。 WordPress開発者としてのデバッグは、優れた開発者になるだけでなく、クリーンで高品質のコードを作成するのにも役立ちます。