Imposta messaggi personalizzati per l'aggiornamento/salvataggio di un post
Sto cercando di creare un messaggio personalizzato invece di quello predefinito quando salvo un post, qualcuno sa come farlo?

http://codex.wordpress.org/Function_Reference/register_post_type esempio:
//aggiungi un filtro per assicurarsi che il testo Libro, o libro, venga visualizzato quando l'utente aggiorna un libro
add_filter('post_updated_messages', 'codex_book_updated_messages');
function codex_book_updated_messages( $messages ) {
global $post, $post_ID;
$messages['book'] = array(
0 => '', // Non utilizzato. I messaggi iniziano dall'indice 1.
1 => sprintf( __('Libro aggiornato. <a href="%s">Visualizza libro</a>'), esc_url( get_permalink($post_ID) ) ),
2 => __('Campo personalizzato aggiornato.'),
3 => __('Campo personalizzato eliminato.'),
4 => __('Libro aggiornato.'),
/* traduttori: %s: data e ora della revisione */
5 => isset($_GET['revision']) ? sprintf( __('Libro ripristinato alla revisione del %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
6 => sprintf( __('Libro pubblicato. <a href="%s">Visualizza libro</a>'), esc_url( get_permalink($post_ID) ) ),
7 => __('Libro salvato.'),
8 => sprintf( __('Libro inviato. <a target="_blank" href="%s">Anteprima libro</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
9 => sprintf( __('Libro programmato per: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Anteprima libro</a>'),
// traduttori: Formato data della box di pubblicazione, vedi http://php.net/date
date_i18n( __( 'j M, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ),
10 => sprintf( __('Bozza libro aggiornata. <a target="_blank" href="%s">Anteprima libro</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
);
return $messages;
}

Archiviazione dei Messaggi
La parte 'message'
dell'array $_GET
è responsabile di contenere il valore effettivo del messaggio come integer
. Ciò significa che tutto ciò che viene passato qui, verrà impostato come messaggio effettivo. I messaggi stessi sono archiviati all'interno di un array globale nei template dell'interfaccia di amministrazione. Si chiama $messages
e ha tre chiavi di default:
page
post
attachment
I messaggi sono archiviati come sotto-array dell'array principale $messages
.
Note:
Alcune cose da tenere a mente (WP core v4.0.1):
- Il valore
0
non è utilizzato. - I messaggi
attachment
attualmente sono un hack e hanno semplicemente la stringa'Media attachment updated.'
su ogni chiave. - Tutti i sotto-array dei messaggi sono lunghi 10 chiavi
Come aggiungere messaggi personalizzati
Usa il filtro post_updated_messages
:
add_filter( 'post_updated_messages', function( $messages )
{
$messages['post'][2] = 'Il mio fantastico campo personalizzato è stato aggiornato. Congratulazioni!';
return $messages;
} );
Guarda ~/wp-admin/edit-form-advanced.php
per vedere quale messaggio viene usato per cosa.
Il fallback, se nessun post type è utilizzato, è l'array dei messaggi del post type
post
.
Custom Post Types
Puoi tranquillamente aggiungere il tuo set di messaggi tramite una callback sul filtro apposito. Assicurati solo di usare il nome del tuo custom post type come chiave per l'array dei messaggi:
add_filter( 'post_updated_messages', function( $messages )
{
$messages['my_custom_post_type'][2] = 'Vai, compra del latte!';
return $messages;
} );
La callback stessa probabilmente è meglio agganciarla a
do_action( "load-{$pagenow}" )

Pensavo che questo potesse essere d'aiuto a qualcuno.
Dopo aver esplorato a fondo vari siti, sono riuscito a visualizzare un messaggio personalizzato solo con l'aiuto di questo.
https://onextrapixel.com/10-tips-for-a-deeply-customised-wordpress-admin-area/
function frl_on_save_post($post_id, $post) {/* aggiunge un filtro di avviso durante il salvataggio del post */
if($post->post_type == 'post') //verifica qualcosa di reale qui
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) { /* filtra la posizione di reindirizzamento per aggiungere un parametro di avviso */
$location = add_query_arg(array('warning'=>'my_warning'), $location);
return $location;
}
function frl_warning_in_notice() { /* stampa il messaggio di avviso */
if(!isset($_REQUEST['warning']) || empty($_REQUEST['warning']))
return;
$warnum = trim($_REQUEST['warning']);
/* possibili codici e messaggi di avviso */
$warnings = array(
'my_warning' => __('Questo è il mio avviso davvero personalizzato!', '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');
