Legen Sie benutzerdefinierte Nachrichten für das Aktualisieren / Speichern nach dem Speichern fest

8

Ich versuche, beim Speichern eines Beitrags eine benutzerdefinierte Nachricht anstelle der Standardnachricht zu erstellen. Weiß jemand, wie das geht?

Karl Barton
quelle
7
Es ist noch nicht okay. Bitte posten Sie Ihre Lösung als Antwort.
Fuxia

Antworten:

9

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

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

Nachrichtenspeicher

Der 'message'Teil des $_GETArrays ist dafür verantwortlich, den tatsächlichen Nachrichtenwert als zu halten integer. Dies bedeutet, dass alles, was dort übergeben wird, als tatsächliche Nachricht festgelegt wird. Die Nachrichten selbst werden in einem globalen Array in den Admin-UI-Vorlagen gespeichert. Es heißt $messagesund hat standardmäßig drei Schlüssel:

  1. page
  2. post
  3. attachment

Die Nachrichten werden als Unterarrays des Hauptarrays gespeichert $messages.

Anmerkungen:

Einige Dinge zu beachten (WP Core v4.0.1):

  • Das 0wird nicht verwendet.
  • Die attachmentNachrichten sind derzeit ein Hack und haben nur die Zeichenfolge 'Media attachment updated.'auf jedem Schlüssel.
  • Alle Nachrichten-Sub-Arrays sind 10 Schlüssel lang

So fügen Sie benutzerdefinierte Nachrichten hinzu

Verwenden Sie den post_updated_messagesFilter:

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

Schauen Sie sich an, ~/wp-admin/edit-form-advanced.phpfür welche Nachricht was verwendet wird.

Der Fallback, wenn kein Post-Typ verwendet wird, ist das postPost-Type-Nachrichtenarray.

Benutzerdefinierte Beitragstypen

Sie können Ihre eigenen Nachrichten sicher über einen Rückruf im angepassten Filter hinzufügen. Stellen Sie einfach sicher, dass Sie den Namen Ihres benutzerdefinierten Beitragstyps als Schlüssel für das Nachrichtenarray verwenden:

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

Der Rückruf selbst ist wahrscheinlich am besten angeschlossen

do_action( "load-{$pagenow}" )
Kaiser
quelle
0

Ich dachte, das könnte einigen helfen.

Nachdem ich die Länge und Breite verschiedener Websites durchgesehen hatte, konnte ich nur mithilfe dieser eine benutzerdefinierte Nachricht anzeigen lassen.

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
quelle