Establecer mensajes personalizados al actualizar/guardar una entrada

21 may 2011, 21:03:12
Vistas: 16.4K
Votos: 8

Estoy intentando mostrar un mensaje personalizado en lugar del mensaje predeterminado cuando guardo una entrada, ¿alguien sabe cómo hacerlo?

1
Comentarios

Todavía no está bien. Por favor, publica tu solución como una respuesta.

fuxia fuxia
21 may 2011 21:21:24
Todas las respuestas a la pregunta 3
0

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

    //añadir filtro para asegurar que el texto Libro, o libro, se muestra cuando el usuario actualiza 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 => '', // No usado. Los mensajes comienzan en el índice 1.
    1 => sprintf( __('Libro actualizado. <a href="%s">Ver libro</a>'), esc_url( get_permalink($post_ID) ) ),
    2 => __('Campo personalizado actualizado.'),
    3 => __('Campo personalizado eliminado.'),
    4 => __('Libro actualizado.'),
    /* translators: %s: fecha y hora de la revisión */
    5 => isset($_GET['revision']) ? sprintf( __('Libro restaurado a la revisión de %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
    6 => sprintf( __('Libro publicado. <a href="%s">Ver libro</a>'), esc_url( get_permalink($post_ID) ) ),
    7 => __('Libro guardado.'),
    8 => sprintf( __('Libro enviado. <a target="_blank" href="%s">Previsualizar libro</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
    9 => sprintf( __('Libro programado para: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Previsualizar libro</a>'),
      // translators: Formato de fecha de la caja de publicación, ver http://php.net/date
      date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ),
    10 => sprintf( __('Borrador de libro actualizado. <a target="_blank" href="%s">Previsualizar libro</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
  );

  return $messages;
}
23 sept 2011 08:33:51
0

Almacenamiento de Mensajes

La parte 'message' del array $_GET es la responsable de contener el valor real del mensaje como integer. Esto significa que todo lo que se pase allí, será establecido como mensaje real. Los mensajes en sí están almacenados dentro de un array global en las plantillas de la interfaz de administración. Se llama $messages y tiene tres claves por defecto:

  1. page
  2. post
  3. attachment

Los mensajes se almacenan como sub-arrays del array principal $messages.

Notas:

Algunas cosas a tener en cuenta (núcleo de WP v4.0.1):

  • El 0 no está en uso.
  • Los mensajes de attachment actualmente son un hack y solo tienen la cadena 'Media attachment updated.' en cada clave.
  • Todos los sub-arrays de mensajes tienen 10 claves de longitud

Cómo añadir mensajes personalizados

Usa el filtro post_updated_messages:

add_filter( 'post_updated_messages', function( $messages )
{
    $messages['post'][2] = '¡Mi campo personalizado acaba de actualizarse. ¡Enhorabuena!';
    return $messages;
} );

Revisa ~/wp-admin/edit-form-advanced.php para ver qué mensaje se usa para qué.

El fallback, si no se usa un tipo de post, es el array de mensajes del tipo de post post.

Tipos de Post Personalizados

Puedes añadir de forma segura tu propio conjunto de mensajes mediante un callback en el filtro mencionado. Solo asegúrate de usar el nombre de tu tipo de post personalizado como clave para el array de mensajes:

add_filter( 'post_updated_messages', function( $messages )
{
    $messages['my_custom_post_type'][2] = '¡Ve a comprar leche!';
    return $messages;
} );

El callback en sí probablemente sea mejor engancharlo en

do_action( "load-{$pagenow}" )
28 nov 2014 13:38:00
0

Pensé que esto podría ayudar a algunos.

Después de revisar a fondo varios sitios, solo pude mostrar un mensaje personalizado con ayuda de esto.

https://onextrapixel.com/10-tips-for-a-deeply-customised-wordpress-admin-area/

function frl_on_save_post($post_id, $post) {/* agregar filtro de advertencia al guardar post */

    if($post->post_type == 'post') //verificar algo real aquí       
        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) { /* filtrar ubicación de redirección para agregar parámetro de advertencia */

    $location = add_query_arg(array('warning'=>'my_warning'), $location);
    return $location;
}

function frl_warning_in_notice() { /* mostrar mensaje de advertencia */

    if(!isset($_REQUEST['warning']) || empty($_REQUEST['warning']))
        return;

    $warnum = trim($_REQUEST['warning']);

    /* posibles códigos y mensajes de advertencia */                 
    $warnings = array(
        'my_warning' => __('¡Esta es mi advertencia verdaderamente personalizada!', '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 oct 2018 13:27:54