J'essaie de créer un message personnalisé au lieu du message par défaut lorsque je sauvegarde un message. Quelqu'un sait-il comment le faire?
http://codex.wordpress.org/Function_Reference/register_post_type exemple:
//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;
}
La partie 'message'
du tableau $_GET
est responsable de la conservation de la valeur du message en tant que integer
. Cela signifie que tout ce qui y est transmis sera défini comme un message réel. Les messages eux-mêmes sont stockés dans un tableau global dans les modèles d'interface utilisateur d'administration. Il s'appelle $messages
et a trois clés par défaut:
page
post
attachment
Les messages sont stockés en tant que sous-tableaux du tableau principal $messages
.
Quelques points à garder à l'esprit (WP Core v4.0.1):
0
n'est pas utilisé.attachment
sont actuellement un hack et ont juste la chaîne 'Media attachment updated.'
sur chaque clé.Utilisez le filtre post_updated_messages
:
add_filter( 'post_updated_messages', function( $messages )
{
$messages['post'][2] = 'My awesome custom field just updated. Congratulations!';
return $messages;
} );
Regardez ~/wp-admin/edit-form-advanced.php
pour quel message est utilisé pour quoi.
Le repli, si aucun type de publication n'est utilisé, est le tableau
post
de type de publication.
Vous pouvez ajouter en toute sécurité votre propre ensemble de messages via un rappel sur le filtre bespoken. Assurez-vous simplement que vous utilisez le nom de votre type de publication personnalisé comme clé pour le tableau de messages:
add_filter( 'post_updated_messages', function( $messages )
{
$messages['my_custom_post_type'][2] = 'Go, buy some milk!';
return $messages;
} );
Le callback lui-même est probablement mieux accroché
do_action( "load-{$pagenow}" )
Pensé que cela pourrait aider certains.
Après avoir parcouru de nombreux sites, je n'ai pu obtenir qu'un message personnalisé à l'aide de cette aide.
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');