Wordpress có chức năng thông báo tích hợp để hiển thị thông báo cho người dùng không?


7

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.


Nơi nào bạn muốn thông báo cho người dùng? WordPress không có gì giống như tích hợp này, vì vậy bạn sẽ phải tìm một trình cắm hoặc tự cuộn bằng cách sử dụng thứ gì đó như Toastr (nếu bạn muốn cửa sổ bật lên).
Joseph Leedy

Một khách hàng muốn chúng tôi chuyển hướng đến trang chủ khi cộng tác viên gửi bài đăng để xem xét thay vì quay lại màn hình chỉnh sửa bài đăng. Tôi muốn cho người dùng biết rằng bài đăng của họ đã được gửi.
SomethingOn

Câu trả lời:


3

Đây là một ý tưởng: sử dụng save_posthook để đặ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 $_SESSIONbiế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;

Đó là những gì tôi đã nghĩ ... nhưng WP không hỗ trợ các phiên rất tốt: tôi sẽ xem những gì tôi có thể đưa ra. Cảm ơn;)
SomethingOn


1
$_SESSIONkhô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.
kaiser

Là tạm thời bằng cách nào đó gắn liền với người dùng cụ thể xem trang như phiên? Không phải mã được chỉnh sửa bằng cách sử dụng tạm thời hiển thị thông báo cho tất cả người dùng. Mặc dù với việc xóa cửa sổ thời gian khá ngắn, nhưng người dùng khác vẫn có thể nhận được tin nhắn thay thế.
Người dùng

bạn đang thiếu một người hãm trong người khác
helle

1

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_noticeshook.

Kiểm tra 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' );

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ó.

Sidenote

Bạn có thể - về lý thuyết cũng sử dụng admin_headhook để 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.


Cảm ơn Kaiser; Tôi đã quên về điều đó. Tôi cho rằng anh ấy muốn tin nhắn hiển thị ở mặt trước, mặc dù. Btw: return print?! Hehe ;-)
Joseph Leedy

1
@Joseph Hôm nay ít mệt. Thế còn return print?
kaiser

Tôi đoán điều đó là hợp lệ - Tôi nghĩ rằng 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.
Joseph Leedy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.