Establecer mensajes personalizados para actualizar / guardar publicaciones

8

Estoy tratando de hacer un mensaje personalizado en lugar del mensaje predeterminado cuando guardo una publicación, ¿alguien sabe cómo hacerlo?

Karl Barton
fuente
77
Aún no está bien. Por favor, publique su solución como respuesta.
fuxia

Respuestas:

9

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

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

Almacenamiento de mensajes

La 'message'parte de la $_GETmatriz es la responsable de mantener el valor real del mensaje como integer. Esto significa que todo lo que se pasa allí se establecerá como mensaje real. Los mensajes en sí se almacenan dentro de una matriz global en las plantillas de la IU de administrador. Su nombre $messagesy tiene tres claves por defecto:

  1. page
  2. post
  3. attachment

Los mensajes se almacenan como sub-matrices de la $messagesmatriz principal .

Notas:

Algunas cosas a tener en cuenta (WP core v4.0.1):

  • El 0no está en uso.
  • Los attachmentmensajes actualmente son un truco y solo tienen la cadena 'Media attachment updated.'en cada tecla.
  • Todos los subconjuntos de mensajes tienen 10 claves de longitud

Cómo agregar mensajes personalizados

Usa el post_updated_messagesfiltro:

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

Mira ~/wp-admin/edit-form-advanced.phpqué mensaje se usa para qué.

El respaldo, si no se utiliza ningún tipo de publicación, es la postmatriz de mensajes de tipo de publicación.

Tipos de publicaciones personalizadas

Puede agregar de manera segura su propio conjunto de mensajes mediante una devolución de llamada en el filtro personalizado. Solo asegúrese de utilizar su nombre de tipo de publicación personalizado como clave para la matriz de mensajes:

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

La devolución de llamada en sí misma probablemente se enganche mejor

do_action( "load-{$pagenow}" )
emperador
fuente
0

Pensé que esto podría ayudar a algunos.

Después de recorrer varios sitios, solo pude ver un mensaje personalizado con la ayuda de esto.

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
fuente