WPエラーオブジェクトをキャッチする/処理する方法


15

wp_insert_post()を含むいくつかのWP関数をプラグイン内で直接実行しています。何か問題が発生した場合、これはWP Errorオブジェクトを返します。このエラーをキャッチする正しい方法は何ですか?組み込みのWP関数またはPHP例外などを使用します。


4
ここの答えで述べられていることを追加して明確にすることは、PHP オブジェクトでWP_ErrorはありませんExceptiontry/catchメソッドは使用しません。ただし、前述のとおり、使いやすくするための便利な機能があります。
ダウガルキャンベル

回答:


21
  1. 関数の戻り値を変数に割り当てます。

  2. で変数を確認しますis_wp_error()

  3. メソッドからのメッセージtrueなどtrigger_error()で適切に処理する場合WP_Error->get_error_message()

  4. 場合false-通常どおり続行します。

使用法:

function create_custom_post() {
  $postarr = array();
  $post = wp_insert_post($postarr);
  return $post;
}

$result = create_custom_post();

if ( is_wp_error($result) ){
   echo $result->get_error_message();
}

11

ヘイ、

最初に、結果がWP_Errorオブジェクトであるかどうかを確認します。

$id = wp_insert_post(...);
if (is_wp_error($id)) {
    $errors = $id->get_error_messages();
    foreach ($errors as $error) {
        echo $error; //this is just an example and generally not a good idea, you should implement means of processing the errors further down the track and using WP's error/message hooks to display them
    }
}

これは通常の方法です。

ただし、万が一の場合に備えて一般的なエラーストアとして機能するために、WP_Errorオブジェクトはエラーを発生させずにインスタンス化できます。そうしたい場合は、以下を使用してエラーがあるかどうかを確認できますget_error_code()

function my_func() {
    $errors = new WP_Error();
    ... //we do some stuff
    if (....) $errors->add('1', 'My custom error'); //under some condition we store an error
    .... //we do some more stuff
    if (...) $errors->add('5', 'My other custom error'); //under some condition we store another error
    .... //and we do more stuff
    if ($errors->get_error_code()) return $errors; //the following code is vital, so before continuing we need to check if there's been errors...if so, return the error object
    .... // do vital stuff
    return $my_func_result; // return the real result
}

これを行うと、wp_insert_post()上記の例のように、返されたエラーのプロセスを確認できます。

クラスはCodexで文書化されています。
また、ここには小さな記事あります


ありがとう!あなたの最初のスニペットはwp_insert_userの作業を行いました。
モハンマドマーサリーン14

1
$wp_error = wp_insert_post( $new_post, true); 
                              echo '<pre>';
                              print_r ($wp_error);
                              echo '</pre>';

これにより、ワードプレスのポスト挿入機能の何が問題なのかが正確にわかります。やってみなよ !

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.