Définir des messages personnalisés pour la mise à jour / sauvegarde après

8

J'essaie de créer un message personnalisé au lieu du message par défaut lorsque j'enregistre un message, est-ce que quelqu'un sait comment le faire!

Karl Barton
la source
7
Ce n'est pas encore bien. Veuillez poster votre solution comme réponse.
fuxia

Réponses:

9

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;
}
Ünsal Korkmaz
la source
2

Stockage des messages

La 'message'partie du $_GETtableau est responsable de la conservation de la valeur réelle du message 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'administration UI. Il est nommé $messageset possède trois clés par défaut:

  1. page
  2. post
  3. attachment

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

Remarques:

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

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

Comment ajouter des messages personnalisés

Utilisez le post_updated_messagesfiltre:

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.phpquel message est utilisé pour quoi.

Le repli, si aucun type de publication n'est utilisé, est le posttableau de messages de type de publication.

Types de publication personnalisés

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

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

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

do_action( "load-{$pagenow}" )
kaiser
la source
0

J'ai pensé que cela pourrait aider certains.

Après avoir parcouru la longueur et la largeur de divers sites, je n'ai pu obtenir qu'un message personnalisé affiché avec l'aide de cela.

https://onextrapixel.com/10-tips-for-a-deply-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');
Vemman
la source