ホームページ >CMS チュートリアル >&#&プレス >WordPressのsave_postフックからエラーを表示します
WordPressからのエラーの処理と表示save_post
フック:3つのアプローチ
wordpressには、save_post
フックに由来するエラーを管理および表示するための単一の標準化された方法がありません。 ただし、いくつかの効果的な戦略が存在し、それぞれに独自の長所と短所があります。この記事では、3つの顕著なアプローチについて説明します。$_SESSION
グローバルの使用、WordPressトランジェントの活用、およびリダイレクトでGETパラメーターを使用します。
フックが実行された後、ユーザーはリダイレクトされ、実行スレッドを破壊し、グローバル変数へのアクセスを失います。 したがって、エラー情報を保存アクションからリダイレクトページに転送するためにメカニズムが必要です。
save_post
グローバル$_SESSION
を利用します
この簡単なメソッドは、エラーメッセージを
$_SESSION
<code class="language-php">if ( !session_id() ) { session_start(); } if ($error) { $_SESSION['my_plugin_errors'] = $error->get_error_message(); } // ...in admin_notices hook... add_action( 'admin_notices', 'my_error_message' ); function my_error_message() { if ( isset( $_SESSION['my_plugin_errors'] ) ) { ?> <div class="error"> <p><?php echo $_SESSION['my_plugin_errors']; ?></p> </div> <?php unset( $_SESSION['my_plugin_errors'] ); } }</code>長所:
トランジェントは、WordPress-Nativeキャッシュメカニズムを提供します。 彼らは、有効期限のある時間でデータを保存したり、利用可能な場合はオブジェクトキャッシュを使用したり、データベースに戻ったりします。
実装:<code class="language-php">if ($error) { set_transient("my_save_post_errors_{$post_id}_{$user_id}", $error, 45); } // ...in admin_notices hook... add_action( 'admin_notices', 'my_error_message' ); function my_error_message() { if ( $error = get_transient( "my_save_post_errors_{$post_id}_{$user_id}" ) ) { ?> <div class="error"> <p><?php echo $error->get_error_message(); ?></p> </div> <?php delete_transient("my_save_post_errors_{$post_id}_{$user_id}"); } }</code>
<code class="language-php">if ($error) { add_filter('redirect_post_location', function( $location ) use ( $error ) { return add_query_arg( 'my-plugin-error', $error->get_error_code(), $location ); }); } // ...in admin_notices hook... add_action( 'admin_notices', 'my_error_message' ); function my_error_message() { if ( isset( $_GET['my-plugin-error'] ) ) { // Handle error based on error code (switch statement) ?> <div class="error"> <p><?php // Display error message based on $_GET['my-plugin-error'] ?></p> </div> <?php } }</code>
最適な方法は、特定のコンテキストに依存します。トランジェントは、WordPressの統合とパフォーマンスの間のバランスをとりますが、GETパラメーターアプローチは最高のパフォーマンスを提供しますが、エラーメッセージをより慎重に管理する必要があります。 $_SESSION
メソッドは、多様なWordPress環境では最も単純ですが、信頼性が低いです。 ニーズとプロジェクトスケールに最適な方法を選択してください。
以上がWordPressのsave_postフックからエラーを表示しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。