web-dev-qa-db-fra.com

Comment informer l'utilisateur que la sauvegarde a échoué?

Lors de la sauvegarde d'un message, j'ai une méta-boîte dans laquelle l'utilisateur doit mettre quelque chose. Si l'entrée d'utilisateur est quelque chose quand je n'accepte pas, comment vais-je lui dire?

add_action('save_post' , 'my_save_metaboxe_data');

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

J'ai aussi lu ce post.

Personnellement, je viens d'écrire un return;, mais le problème le plus important auquel je suis confronté est qu'il renvoie le message suivant à l'utilisateur:

enter image description here

Que puis-je faire pour empêcher ce message?

J'ai également étudié le crochet merveilleux admin_notices , mais je ne sais toujours pas comment l'utiliser pour apparaître au bon moment.

Alors, comment puis-je éviter au moins le message ci-dessus? ( Je développe un plugin pour WordPress. )

Ma question est spécifique sur la création d'un nouveau post personnalisé et pour les validations de boîtes de méta que j'ai ajoutées. Comment gérer l'action save_post pour renvoyer les messages appropriés et ne pas toujours renvoyer "tout va bien".

1
Shake-the-World

Gestion de la notification de l'administrateur sur Edit Post

Lorsque action est liée à post ou editpost, nous nous trouverons face à la fonction redirect_post . Il existe deux filtres que vous pouvez utiliser pour gérer les messages de publication, redirect_post_location et post_updated_messages (voir la liste des messages à https://core.trac.wordpress.org/browser/tags/4.8/src /wp-admin/edit-form-advanced.php#L135 ).

Voici l'exemple de code permettant de gérer les messages.

Créer un nouveau message (facultatif)

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;
} );

Gestion de la redirection

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 );

En tant que référence codex, le code 0 ne nous sera pas prévenu. La notification donnera toujours une notification de mise à jour (couleur verte). Si nous avons besoin d’une notification d’erreur ou d’un avertissement, je suggère de créer une notification propre à l’administrateur. J'espère que cette aide.

0
Jevuska