web-dev-qa-db-ja.com

保存が失敗したことをユーザーに通知する方法

投稿を保存するとき、私はユーザーが何かを入れなければならないメタボックスを持っています。受け入れないときにユーザー入力が何かである場合、どうすれば彼に伝えますか?

add_action('save_post' , 'my_save_metaboxe_data');

function my_save_metaboxe_data( $post_id )
{
    ....
    if ( 'something not accepted' )
    {
        return ????? ;
    }
    ....
}

this postも読んでください。

私は個人的にはreturn;を書くだけですが、私がこのように直面する最も重要な問題はそれがユーザーに以下のメッセージを返すということです:

enter image description here

このメッセージを防ぐために私は何ができますか?

私は素晴らしいフック admin_notices についても研究しましたが、それがどのようなときに現れるのかをまだ知りません。

それでは、どうすれば少なくとも上記のメッセージを防ぐことができますか? (WordPress用のプラグインを開発しました。

私の質問は、新しいカスタム投稿の作成、およびメタボックスの検証に対する追加です。 save_postアクションを処理して適切なメッセージを返し、常に「すべてうまくいく」ことを返さないようにする方法。

1
Shake-the-World

投稿編集時の管理者通知の処理

アクションpostまたはeditpostに関連する場合、 redirect_post 関数に直面します。投稿メッセージを処理するために使用できる2つのフィルタ、redirect_post_locationpost_updated_messagesがあります( のメッセージの一覧を参照してください。 /wp-admin/edit-form-advanced.php#L135 )。

サンプルコードは、メッセージを処理する方法です。

新しいメッセージを作成する(オプション)

add_filter( 'post_updated_messages', function( $messages ) {
    //create another message code, i.e 11
    $messages['post'] = $messages['post'] + array( 11 => __( 'Something Wrong', 'textdomain' ) );

    return $messages;
} );

リダイレクト処理

add_filter( 'redirect_post_location', function( $location, $post_id ) {
    //let say the conditon is false, or you can create your code here
    $condition = false;

    if ( ! $condition ) //add 11 as code message or use in the list post messages
        $location = add_query_arg( 'message', 11, get_edit_post_link( $post_id, 'url' ) );


    return $location;
}, 10, 2 );

それらのコーデックスの参照として、コード0は私達に通知を与えないでしょう。通知は常に更新通知(緑色)を出します。エラーや警告の通知が必要な場合は、独自の管理者通知を作成することをお勧めします。これが助けになれば幸いです。

0
Jevuska