web-dev-qa-db-fra.com

Wordpress dispose-t-il d'une fonction de message intégrée permettant de présenter des notifications aux utilisateurs?

Wordpress a-t-il quelque chose de similaire à la fonction drupal_set_message de Drupal? Je veux informer l'utilisateur de quelque chose et espérais qu'il y avait un appel API intégré pour le faire.

7
SomethingOn

Voici une idée: utilisez le save_post hook pour définir une session contenant le message que vous voulez montrer à l'utilisateur, puis redirigez-la vers la page d'accueil. Dans le modèle de page d'accueil, vérifiez la présence de cette session et affichez le message à l'utilisateur.

Quelque chose comme ça:

functions.php:

add_action( 'save_post', 'wpse60249_save_post' );

function wpse60249_save_post( $post_id ) {
    session_start();
    $_SESSION[ 'message' ] = __( 'Your text here...' );
}

index.php (ou un modèle approprié):

if ( isset( $_SESSION[ 'message' ] ) :
    echo $_SESSION[ 'message' ];
    unset( $_SESSION[ 'message' ] );
endif;

Edit 10/21/2012

Lorsque j'ai écrit cette réponse, je ne savais pas que WordPress réinitialisait la variable $_SESSION mais je l'ai appris il y a quelques semaines lorsque je travaillais sur un projet pour un client. Merci pour le rappel de cette question, @kaiser! Voici le code mis à jour utilisant transitoires à la place:

functions.php:

add_action( 'save_post', 'wpse60249_save_post' );

function wpse60249_save_post( $post_id ) {
    session_start();
    set_transient( 'temporary_message', __( 'Your text here...' ), 60*60*12 );
}

index.php (ou modèle approprié):

if ( false !== ( $temp_message = get_transient( 'temporary_message' ) ) :
    echo $temp_message;
    delete_transient( 'temporary_message' );
endif;
3
Joseph Leedy

Il y a une mise à jour et un message d'erreur que vous pouvez utiliser sur le hook admin_notices.

Test Plugin

/* Plugin Name: Admin Notice w test message */
function wpse60244_custom_admin_notice()
{
    return print '<div id="message" class="updated fade"><p><strong>Hi!</strong> Look at me! In theory I should even fade out after a short time span!</p></div>';
}
add_action( 'admin_notices', 'wpse60244_custom_admin_notice' );

Vous pouvez jeter ceci dans votre dossier plugins et le tester.

Sidenotes

En théorie, vous pouvez également utiliser le hook admin_head pour déclencher l’ajout de l’action. Si vous n'en avez besoin que sur des écrans/pages spécifiques de l'interface utilisateur d'administration, recherchez global $taxnow, $pagenow; ou utilisez le hook admin_head-{$hook_suffix}.

1
kaiser