it-swarm.com.de

Festlegen von benutzerdefinierten Nachrichten zum Aktualisieren/Speichern nach dem Speichern

Ich versuche, eine benutzerdefinierte Nachricht anstelle der Standardnachricht zu erstellen, wenn ich einen Beitrag speichere. Weiß jemand, wie es geht?

8
Karl Barton

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;
}
9
Ünsal Korkmaz

Nachrichtenspeicher

Der 'message'-Teil des $_GET-Arrays ist dafür verantwortlich, dass der tatsächliche Nachrichtenwert als integer gespeichert wird. Dies bedeutet, dass alles, was dort reinkommt, als aktuelle Nachricht gesetzt wird. Die Nachrichten selbst werden in einem globalen Array in den Admin-UI-Vorlagen gespeichert. Es heißt $messages und hat standardmäßig drei Schlüssel:

  1. page
  2. post
  3. attachment

Die Nachrichten werden als Unterfelder des Hauptfelds $messages gespeichert.

Anmerkungen:

Einige Dinge, die Sie beachten sollten (WP Core v4.0.1):

  • Der 0 wird nicht verwendet.
  • Die attachment-Nachrichten sind derzeit ein Hack und enthalten auf jedem Schlüssel nur die Zeichenfolge 'Media attachment updated.'.
  • Alle Nachrichtenunterfelder haben eine Länge von 10 Schlüsseln

So fügen Sie benutzerdefinierte Nachrichten hinzu

Verwenden Sie den post_updated_messages-Filter:

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

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

Wenn kein Beitragstyp verwendet wird, ist der Fallback das Nachrichtenarray post.

Benutzerdefinierte Beitragstypen

Sie können Ihre eigenen Nachrichten sicher über einen Rückruf im maßgeschneiderten 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 angesagt

do_action( "load-{$pagenow}" )
2
kaiser

Dachte, das könnte einigen helfen.

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

https://onextrapixel.com/10-tips-for-a-deeply-customized-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');
0
Vemman