Имеет ли Wordpress встроенную функцию сообщения для представления уведомлений пользователям?
Есть ли у Wordpress что-то похожее на функцию drupal_set_message от Drupal? Я хочу уведомить пользователя о чем-то и надеялся, что для этого был встроенный API-запрос.
2 ответа
Вот идея: используйте 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
, но я узнал, что пару недель назад работая над проектом для клиента. Спасибо за напоминание об этом вопросе, @kaiser! Здесь обновлен код, используя переходные процессы :
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;
Появится сообщение об ошибке и сообщение об ошибке, которое вы можете использовать в admin_notices
.
Контрольный плагин
/* 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' );
Вы можете выбросить это в свою папку плагинов и дать ему тест.
Sidenotes
Вы могли бы - в теории также использовать крючок admin_head
, чтобы вызвать добавление действия. Если вам это нужно только на определенных экранах /страницах пользовательского интерфейса администратора, проверьте global $taxnow, $pagenow;
или используйте admin_head-{$hook_suffix}
.