投稿を保存するとき、私はユーザーが何かを入れなければならないメタボックスを持っています。受け入れないときにユーザー入力が何かである場合、どうすれば彼に伝えますか?
add_action('save_post' , 'my_save_metaboxe_data');
function my_save_metaboxe_data( $post_id )
{
....
if ( 'something not accepted' )
{
return ????? ;
}
....
}
this postも読んでください。
私は個人的にはreturn;
を書くだけですが、私がこのように直面する最も重要な問題はそれがユーザーに以下のメッセージを返すということです:
このメッセージを防ぐために私は何ができますか?
私は素晴らしいフック admin_notices
についても研究しましたが、それがどのようなときに現れるのかをまだ知りません。
それでは、どうすれば少なくとも上記のメッセージを防ぐことができますか? (WordPress用のプラグインを開発しました。)
私の質問は、新しいカスタム投稿の作成、およびメタボックスの検証に対する追加です。 save_postアクションを処理して適切なメッセージを返し、常に「すべてうまくいく」ことを返さないようにする方法。
投稿編集時の管理者通知の処理
アクションがpost
またはeditpost
に関連する場合、 redirect_post
関数に直面します。投稿メッセージを処理するために使用できる2つのフィルタ、redirect_post_location
とpost_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
は私達に通知を与えないでしょう。通知は常に更新通知(緑色)を出します。エラーや警告の通知が必要な場合は、独自の管理者通知を作成することをお勧めします。これが助けになれば幸いです。