「エラーは勝手に起きるものだと思っている」
「WordPressの自作プラグインを作っていてエラーハンドリングを知りたい」
「ネットに出てくるWP_Errorが何をするためのものなのかイメージできていない」
本日はそんな方に向けてWordPressのWP_Errorについて解説していきます。
この動画ではWordPressの中核的な概念であるWP_Errorに焦点を当てて解説します。
WP_ErrorはWordPressのエラー処理において重要な役割を果たしており、その使い方を正しく理解することは安全性や信頼性を高める上で不可欠です。
今回はWP_Errorがどのようにエラー情報を収集し、処理するのか、また実際のコード例を交えて具体的な使用方法を説明します。
WordPressのプラグインやテーマの開発においてエラー処理を行う際に、WP_Errorの活用は非常に重要ですのでぜひこの機会にしっかりと理解していきましょう。
WordPressのWP_Errorとは?
一番簡単なエラーの作り方は条件分岐を作って特定のケースに外れるとechoで「エラーです」と画面に表示することです。
<?php
function error_check(){
$num = 100;
if($num == 100){
return true;
}else{
return false;
}
}
if(error_check()){
echo "エラーです";
}
?>
WordPressには便利なクラスや関数がたくさん用意されていてゼロからプログラミングしなくて良いようになっています。
そんな中でWP_Errorというクラスがありインスタンス化することでオリジナルのエラーを作ることができます。
コードを間違えた時に出るエラーと違って、ユーザーの操作間違いやネットの遮断など不定期な事故で動作しなくなる前にエラーという処理で画面を止めないといけない場面があります。
逆にエラーが全く出ないで自由に操作できるサイトであれば間違ったデータ送信や決済不備、イタズラされるなど色んなリスクがあります。
エラーと聞くと嫌なイメージがあるかもしれませんが、その後に起こり得る重大な事故を防ぐためのガードマンのようなものです。
自作プラグインやテーマ開発などではエラー処理を自分で作るのが必須になりますので初心者でもWP_Errorの使い方は知っておくべきスキルです。
基本的にはクラスをインスタンス化するだけです。
<?php
function error_check(){
$err = new WP_Error("500", "エラー",["aaa",100]);
var_dump($err);
}
error_check();
?>
インスタンス化するときに第一引数にはエラーコード、第二引数にはエラーメッセージ、第三引数にはエラー時に使用したいデータを書きます。
全て任意項目ですので引数なしで後から引数を追加することも可能で、addプロパティというもので後から引数できます。
「エラーメッセージは個別に変えたい」などパターンが複数ある時には最初は引数を決めずにインスタンス化だけしておいて、都度そのエラーになったらaddプロパティで引数を渡すようなことがあるためです。
<?php
function error_check(){
$err = new WP_Error();
if(false){
$err->add("500","必須項目です");
var_dump($err);
}
}
error_check();
?>
引数に追加したそれぞれの値は専用の関数があり使用することで取り出せます。
<?php
function error_check(){
$err = new WP_Error("500", "エラー",["aaa",100]);
var_dump($err->get_error_code()); // 500
var_dump($err->get_error_message()); // エラー
var_dump($err->get_error_data()); // ["aaa", 100]
}
error_check();
?>
ユーザーが見る画面上だけの話であればエラーメッセージがあれば良いので、例えばですが以下のような処理をすることが一般的です。
<?php
function error_check(){
$num = 100;
if($num == 100){
return new WP_Error("error_code", "エラーです");
}else{
return false;
}
$err = error_check();
if($err != false){
echo $err->get_error_message(); // エラーですと表示される
}
?>
もちろん単純に「echo “エラーです”」と書いても同じことですが、後からメッセージ内容を変えたい時にはいろんな場所を修正することになります。
一方でWP_Errorでインスタンス化された変数errはオブジェクト形式になっています。
そのためWP_Errorを使ってテンプレートとして管理する方が効率的なことが多いです。
オブジェクトになっていることで複数のエラーパターンを実行することも可能です。
先ほど空の引数でインスタンス化する例をお見せしたように以下の書き方ができるわけです。
<?php
function error_check(){
$email = "";
$text = "";
$err = new WP_Error();
if($email == ""){
$err->add("100","メールアドレスを入力してください");
}
if($text == ""){
$err->add("101","こちらは必須項目です");
}
var_dump($err);
}
error_check();
?>
上記はフォームを想定してメールアドレスとテキストのそれぞれが未入力だったときに別々のエラーにして画面に表示する文面を変えているコードです。