Imposta messaggi personalizzati per l'aggiornamento/salvataggio di un post

21 mag 2011, 21:03:12
Visualizzazioni: 16.4K
Voti: 8

Sto cercando di creare un messaggio personalizzato invece di quello predefinito quando salvo un post, qualcuno sa come farlo?

1
Commenti

Non è ancora corretto. Per favore, pubblica la tua soluzione come risposta.

fuxia fuxia
21 mag 2011 21:21:24
Tutte le risposte alla domanda 3
0

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;
}
23 set 2011 08:33:51
0

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:

  1. page
  2. post
  3. 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}" )
28 nov 2014 13:38:00
0

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');
24 ott 2018 13:27:54