问题描述

WordPress 有什么类似于 Drupal 的 drupal_set_message 功能?我想通知用户某些东西,希望有一个内置的 API 调用来做到这一点。

最佳解决方案

这是一个想法:使用 save_post 钩子设置一个会话,其中包含要显示用户的消息,然后重定向到主页。在主页模板中,检查该会话的存在并向用户显示消息。

这样的事情

的 functions.php:

add_action( 'save_post', 'wpse60249_save_post' );

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

index.php(或适当的模板):

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

编辑 10/21/2012

当我写了这个答案时,我不知道 WordPress 会重新设置 $_SESSION 变量,但是在几个星期前,我学到了一个客户端的项目。感谢您提醒这个问题,@凯撒!这是使用 transients 代替的更新代码:

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(或适当的模板):

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

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。