Definir mensagens personalizadas para postar atualização / salvar

8

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

    
por Karl Barton 21.05.2011 / 20:03

3 respostas

9

enlace 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;
}
    
por Ünsal Korkmaz 23.09.2011 / 07:33
2

Armazenamento de mensagens

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

  1. page
  2. post
  3. attachment

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

Notas:

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

  • O 0 não está em uso.
  • As mensagens attachment atualmente são um hack e só têm a string 'Media attachment updated.' em cada chave.
  • Todas as sub-matrizes de mensagens têm 10 chaves por extenso

Como adicionar mensagens personalizadas

Use o filtro post_updated_messages :

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.php para qual mensagem é usada para o quê.

  

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

Tipos de postagem personalizados

Você pode adicionar seu próprio conjunto de mensagens com segurança por meio de um retorno de chamada no filtro indicado. Apenas certifique-se de usar seu nome de tipo de postagem personalizado 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 está mais ligado em

do_action( "load-{$pagenow}" )
    
por kaiser 28.11.2014 / 12:38
0

Pensei que isso poderia ajudar alguns.

Depois de percorrer o tamanho e a largura de vários sites, só consegui exibir uma mensagem personalizada com a ajuda disso.

enlace

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');
    
por Vemman 24.10.2018 / 12:27