Ich versuche, beim Speichern eines Beitrags eine benutzerdefinierte Nachricht anstelle der Standardnachricht zu erstellen. Weiß jemand, wie das geht?
Ich versuche, beim Speichern eines Beitrags eine benutzerdefinierte Nachricht anstelle der Standardnachricht zu erstellen. Weiß jemand, wie das geht?
Antworten:
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;
}
Der 'message'
Teil des $_GET
Arrays 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 $messages
und hat standardmäßig drei Schlüssel:
page
post
attachment
Die Nachrichten werden als Unterarrays des Hauptarrays gespeichert $messages
.
Einige Dinge zu beachten (WP Core v4.0.1):
0
wird nicht verwendet.attachment
Nachrichten sind derzeit ein Hack und haben nur die Zeichenfolge 'Media attachment updated.'
auf jedem Schlüssel.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 an, ~/wp-admin/edit-form-advanced.php
für welche Nachricht was verwendet wird.
Der Fallback, wenn kein Post-Typ verwendet wird, ist das
post
Post-Type-Nachrichtenarray.
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}" )
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');