ホームページ >CMS チュートリアル >&#&プレス >WordPressのsave_postフックからエラーを表示します

WordPressのsave_postフックからエラーを表示します

Joseph Gordon-Levitt
Joseph Gordon-Levittオリジナル
2025-02-16 11:50:17987ブラウズ

WordPressからのエラーの処理と表示save_postフック:3つのアプローチ

wordpressには、save_postフックに由来するエラーを管理および表示するための単一の標準化された方法がありません。 ただし、いくつかの効果的な戦略が存在し、それぞれに独自の長所と短所があります。この記事では、3つの顕著なアプローチについて説明します。$_SESSIONグローバルの使用、WordPressトランジェントの活用、およびリダイレクトでGETパラメーターを使用します。

Displaying Errors from the save_post Hook in WordPress

複雑さは、WordPressの節約後のリダイレクトに由来しています。

フックが実行された後、ユーザーはリダイレクトされ、実行スレッドを破壊し、グローバル変数へのアクセスを失います。 したがって、エラー情報を保存アクションからリダイレクトページに転送するためにメカニズムが必要です。 save_post

メソッド1:

グローバル$_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>
長所:
    簡単な実装、データベースのオーバーヘッドなし。
  • cons:
  • 標準的なWordPressプラクティスではありません。すべてのセットアップで一貫して有効にされていないセッションハンドリングに依存しています。
  • メソッド2:WordPressトランジェントの採用

トランジェントは、WordPress-Nativeキャッシュメカニズムを提供します。 彼らは、有効期限のある時間でデータを保存したり、利用可能な場合はオブジェクトキャッシュを使用したり、データベースに戻ったりします。

実装:

  • 長所:
WordPressフレンドリー、期限切れのデータの自動クリーンアップ。
<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>
  • cons:データベースインタラクションオブジェクトキャッシュが構成されていない場合。エッジの場合の潜在的なデータ損失
  • メソッド3:リダイレクトURLにgetパラメーターを追加する これは、更新メッセージを表示するためのWordPress自身のアプローチを反映しています。 エラーコードは、リダイレクトURLにクエリパラメーターとして追加されます。
実装:

    長所:
  • 高性能、データベースへのアクセスなし。
  • cons:
には、エラーメッセージの複製が必要です。メンテナンスオーバーヘッドは、多数のエラーコードとともに増加する可能性があります。
<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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。