Wordpress có cái gì đó tương tự như chức năng drupal_set_message của Drupal không? Tôi muốn thông báo cho người dùng về một cái gì đó và hy vọng có một lệnh gọi API tích hợp để thực hiện việc này.
Wordpress có cái gì đó tương tự như chức năng drupal_set_message của Drupal không? Tôi muốn thông báo cho người dùng về một cái gì đó và hy vọng có một lệnh gọi API tích hợp để thực hiện việc này.
Câu trả lời:
Đây là một ý tưởng: sử dụng save_post
hook để đặt phiên chứa thông báo bạn muốn hiển thị cho người dùng và sau đó chuyển hướng đến trang chủ. Trong mẫu trang chủ, hãy kiểm tra sự hiện diện của phiên đó và hiển thị thông báo cho người dùng.
Một cái gì đó như thế này:
Hàm.php:
add_action( 'save_post', 'wpse60249_save_post' );
function wpse60249_save_post( $post_id ) {
session_start();
$_SESSION[ 'message' ] = __( 'Your text here...' );
}
index.php (hoặc mẫu thích hợp):
if ( isset( $_SESSION[ 'message' ] ) :
echo $_SESSION[ 'message' ];
unset( $_SESSION[ 'message' ] );
endif;
Chỉnh sửa 21/10/2012
Khi tôi viết câu trả lời này, tôi không biết rằng WordPress đặt lại $_SESSION
biến nhưng tôi đã biết rằng một vài tuần trước khi làm việc trên một dự án cho một khách hàng. Cảm ơn đã nhắc nhở về câu hỏi này, @kaiser! Đây là mã được cập nhật bằng cách sử dụng quá độ thay thế:
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
(hoặc mẫu thích hợp):
if ( false !== ( $temp_message = get_transient( 'temporary_message' ) ) :
echo $temp_message;
delete_transient( 'temporary_message' );
endif;
$_SESSION
không hoạt động đúng trong WP. Họ không được đặt theo lõi trong quá trình khởi động / yêu cầu bắt đầu.
Có một bản cập nhật và một thông báo lỗi, mà bạn có thể sử dụng trên admin_notices
hook.
/* 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' );
Bạn có thể ném cái này vào thư mục plugin của bạn và kiểm tra nó.
Bạn có thể - về lý thuyết cũng sử dụng admin_head
hook để kích hoạt thêm hành động. Nếu bạn chỉ cần nó trên màn hình / trang UI quản trị cụ thể, sau đó kiểm tra global $taxnow, $pagenow;
hoặc sử dụng admin_head-{$hook_suffix}
hook.
return print
?! Hehe ;-)
return print
?
print
đã không trả lại bất cứ điều gì nhưng theo các tài liệu , nó luôn trả về 1.