Definir mensagens personalizadas para atualização / salvamento pós

8

Estou tentando fazer uma mensagem personalizada em vez da mensagem padrão quando eu salvar uma postagem, alguém sabe como fazer isso!

Karl Barton
fonte
7
Ainda não está tudo bem. Poste sua solução como resposta.
fuxia

Respostas:

9

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

    //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
fonte
2

Armazenamento de Mensagens

A 'message'parte da $_GETmatriz é responsável por manter o valor real da mensagem como integer. Isso significa que tudo o que for passado lá será definido como mensagem real. As mensagens em si são armazenadas em uma matriz global nos modelos de UI do administrador. É nomeado $messagese tem três chaves por padrão:

  1. page
  2. post
  3. attachment

As mensagens são armazenadas como sub-matrizes da $messagesmatriz principal .

Notas:

Algumas coisas a ter em mente (WP core v4.0.1):

  • O 0não está em uso.
  • As attachmentmensagens atualmente são um hack e apenas possuem a string 'Media attachment updated.'em todas as chaves.
  • Todas as sub-matrizes de mensagens têm 10 chaves

Como adicionar mensagens personalizadas

Use o post_updated_messagesfiltro:

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

Veja ~/wp-admin/edit-form-advanced.phpqual mensagem é usada para quê.

O fallback, se nenhum tipo de postagem for usado, é a postmatriz de mensagens do tipo de postagem.

Tipos de postagem personalizados

Você pode adicionar com segurança seu próprio conjunto de mensagens por meio de um retorno de chamada no filtro sob medida. Apenas certifique-se de usar seu nome personalizado de tipos de postagem como chave para a matriz de mensagens:

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

O retorno de chamada em si provavelmente é melhor conectado

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

Achei que isso poderia ajudar alguns.

Depois de percorrer vários sites, só consegui receber uma mensagem personalizada com a ajuda disso.

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');
Vemman
fonte