問題描述

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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。