web-dev-qa-db-ja.com

ワードプレスプラグインのエラー処理

独自のカスタムフィールドを持つカスタム投稿タイプのエラーを処理する方法を探しています。これは私が書いているプラ​​グインのすべての部分ですが、徹底的な調査の後、私が見つけた唯一の方法はセッション(あるいは同様のもの)を通して次のページに表示することです(その場合それは変更を保存します)。

何か他の方法でエラーを処理し、WordPressが投稿タイプを保存できないようにする方法はありますか?もしそうならどうですか?私はWP_Errorクラスが機能するだろうと考えましたが、運が良かったです。

誰でも手伝うことができれば、それは素晴らしいことです!

ありがとうございます。

4
Hosh Sadiq

WordPressには、バージョン2.1.0以降のWordPressのエラーとエラーメッセージをチェックするための WP_Error クラスがあります。 WordPressは、いくつかのWP関数からのエラーを報告するためにWP_Errorクラスのオブジェクトを使用しています。ただし、このオブジェクトをプラグインまたはテーマで使用して、WordPress内のエラーを処理することができます。このクラスには、エラーを管理するための非常に便利なメソッドが含まれています。

すべての方法

<?php
//Creating instance of error class
$error = new WP_Error( 'not_found', 'Page Not Found', 'Page Data' );

//Add new error to object
$error->add( 'not_match', 'Field Not Match' );

//Return all error codes from object
$data = $error->get_error_codes();
print_r( $data );
//Output: Array ( [0] => not_found [1] => not_match )

//Return first error code
echo $error->get_error_code();
//Output: not_found

//Return all error message
$data = $error->get_error_messages();
print_r( $data );
//Output: Array ( [0] => Page Not Found [1] => Field Not Match )

//Return error message by error code
$data = $error->get_error_messages( 'not_match' );
print_r( $data );
//Output: Array ( [0] => Field Not Match )

//Return first error message if no code are given
echo $error->get_error_message();
//Output: Page Not Found

//Return first error message for given error code
echo $error->get_error_message( 'not_match' );
//Output: Field Not Match

//Return first error data
echo $error->get_error_data();
//Output: Page Data

//Return error data from error code.
echo $error->get_error_data( 'not_found' );
//Output: Page Data

//add error data to error code
//syntex: add_data( $data, $code );
$error->add_data( 'Some data', 'not_match' );
echo $error->get_error_data( 'not_match' );
//Output: Some data

//Check whether variable is a WordPress Error.
//return bool True, if WP_Error. False, if not WP_Error.
$data = is_wp_error( $error );
var_dump( $data );
//Output: bool(true)

出典とヒント:この記事の背景

3
bueltge