投稿タイプのカスタムフィールドを定義する関数があります。フィールドが「サブヘッド」であるとします。
投稿が保存されたら、入力に対して何らかの検証を行い、必要に応じて投稿編集画面にエラーメッセージを表示します。何かのようなもの:
// Handle post updating
function wpse_update_post_custom_values($post_id, $post) {
    // Do some checking...
    if($_POST['subhead'] != 'value i expect') {
        // Add an error here
        $errors->add('oops', 'There was an error.');
    }
    return $errors;
} 
add_action('save_post','wpse_update_post_custom_values',1,2);これをsave_postアクションにフックしようとしていますが、エラーの処理方法がわかりません。関数に渡されたエラーオブジェクトは存在しないようで、独自のWP_Error objを作成してそれを返す場合、ポスト編集ページでエラーを吐き出すメカニズムによって尊重されません。
現在、カスタムメタボックス内にページ上のエラーメッセージがありますが、これは理想的とは言えません。WPが通常表示するような、大きくて赤くて上部にエラーがあります。
何か案は?
更新:
@Denisの回答に基づいて、いくつかの異なることを試しました。エラーをグローバルとして保存することは機能しませんでした。これは、Wordpressがsave_postプロセス中にリダイレクトを行うため、グローバルを表示する前に強制終了するためです。
私はそれらをメタフィールドに保存することになりました。これに伴う問題は、それらをクリアする必要があることです。そうしないと、別のページに移動しても消えないため、エラーをクリアするだけのadmin_footerに追加された別の関数を追加する必要がありました。
非常に一般的なもの(投稿の更新)のエラー処理がこれほど不格好になるとは思いませんでした。明らかな何かを見逃していますか、これが最良のアプローチですか?
// Handle post updating
function wpse_5102_update_post_custom_values($post_id, $post) {
    // To keep the errors in
    $errors = false;
    // Do some validation...
    if($_POST['subhead'] != 'value i expect') {
        // Add an error here
        $errors .= 'whoops...there was an error.';
    }
    update_option('my_admin_errors', $errors);
    return;
} 
add_action('save_post','wpse_5102_update_post_custom_values',1,2);
// Display any errors
function wpse_5102_admin_notice_handler() {
    $errors = get_option('my_admin_errors');
    if($errors) {
        echo '<div class="error"><p>' . $errors . '</p></div>';
    }   
}
add_action( 'admin_notices', 'wpse_5102_admin_notice_handler' );
// Clear any errors
function wpse_5102__clear_errors() {
    update_option('my_admin_errors', false);
}
add_action( 'admin_footer', 'wpse_5102_clear_errors' );update_option('my_admin_errors', false);、末尾のifステートメントの直後に実行する方がわずかに効率的wpse_5102_admin_notice_handler()でしょうか?
                
admin_footer通知ハンドラー関数の最後でエラーをクリアすると、フックを取り除くことができると思います。物事を少し簡素化します。