web-dev-qa-db-fra.com

Définir des messages personnalisés pour post-mise à jour/enregistrer

J'essaie de créer un message personnalisé au lieu du message par défaut lorsque je sauvegarde un message. Quelqu'un sait-il comment le faire?

8
Karl Barton

http://codex.wordpress.org/Function_Reference/register_post_type exemple:

    //add filter to ensure the text Book, or book, is displayed when user updates a book 
add_filter('post_updated_messages', 'codex_book_updated_messages');
function codex_book_updated_messages( $messages ) {
  global $post, $post_ID;

  $messages['book'] = array(
    0 => '', // Unused. Messages start at index 1.
    1 => sprintf( __('Book updated. <a href="%s">View book</a>'), esc_url( get_permalink($post_ID) ) ),
    2 => __('Custom field updated.'),
    3 => __('Custom field deleted.'),
    4 => __('Book updated.'),
    /* translators: %s: date and time of the revision */
    5 => isset($_GET['revision']) ? sprintf( __('Book restored to revision from %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
    6 => sprintf( __('Book published. <a href="%s">View book</a>'), esc_url( get_permalink($post_ID) ) ),
    7 => __('Book saved.'),
    8 => sprintf( __('Book submitted. <a target="_blank" href="%s">Preview book</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
    9 => sprintf( __('Book scheduled for: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Preview book</a>'),
      // translators: Publish box date format, see http://php.net/date
      date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ),
    10 => sprintf( __('Book draft updated. <a target="_blank" href="%s">Preview book</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
  );

  return $messages;
}
9
Ünsal Korkmaz

Stockage de messages

La partie 'message' du tableau $_GET est responsable de la conservation de la valeur du message en tant que integer. Cela signifie que tout ce qui y est transmis sera défini comme un message réel. Les messages eux-mêmes sont stockés dans un tableau global dans les modèles d'interface utilisateur d'administration. Il s'appelle $messages et a trois clés par défaut:

  1. page
  2. post
  3. attachment

Les messages sont stockés en tant que sous-tableaux du tableau principal $messages.

Remarques:

Quelques points à garder à l'esprit (WP Core v4.0.1):

  • Le 0 n'est pas utilisé.
  • Les messages attachment sont actuellement un hack et ont juste la chaîne 'Media attachment updated.' sur chaque clé.
  • Tous les sous-tableaux de messages ont 10 clés

Comment ajouter des messages personnalisés

Utilisez le filtre post_updated_messages:

add_filter( 'post_updated_messages', function( $messages )
{
    $messages['post'][2] = 'My awesome custom field just updated. Congratulations!';
    return $messages;
} );

Regardez ~/wp-admin/edit-form-advanced.php pour quel message est utilisé pour quoi.

Le repli, si aucun type de publication n'est utilisé, est le tableau post de type de publication.

Types de messages personnalisés

Vous pouvez ajouter en toute sécurité votre propre ensemble de messages via un rappel sur le filtre bespoken. Assurez-vous simplement que vous utilisez le nom de votre type de publication personnalisé comme clé pour le tableau de messages:

add_filter( 'post_updated_messages', function( $messages )
{
    $messages['my_custom_post_type'][2] = 'Go, buy some milk!';
    return $messages;
} );

Le callback lui-même est probablement mieux accroché

do_action( "load-{$pagenow}" )
2
kaiser

Pensé que cela pourrait aider certains.

Après avoir parcouru de nombreux sites, je n'ai pu obtenir qu'un message personnalisé à l'aide de cette aide.

https://onextrapixel.com/10-tips-for-a-deeply-customised-wordpress-admin-area/

function frl_on_save_post($post_id, $post) {/* add warning filter when saving post */

    if($post->post_type == 'post') //test for something real here       
        add_filter('redirect_post_location', 'frl_custom_warning_filter');

}
add_action('save_post', 'frl_on_save_post', 2, 2);

function frl_custom_warning_filter($location) { /* filter redirect location to add warning parameter*/

    $location = add_query_arg(array('warning'=>'my_warning'), $location);
    return $location;
}

function frl_warning_in_notice() { /* print warning message */

    if(!isset($_REQUEST['warning']) || empty($_REQUEST['warning']))
        return;

    $warnum = trim($_REQUEST['warning']);

    /* possible warnings codes and messages */                 
    $warnings = array(
        'my_warning' => __('This is my truly custom warning!', 'frl')
    );

    if(!isset($warnings[$warnum]))
        return; 

    echo '<div class="error message"><p><strong>';
    echo $warnings[$warnum];
    echo '</strong></p></div>';
}       
add_action('admin_notices', 'frl_warning_in_notice');
0
Vemman