Đặt tin nhắn tùy chỉnh để cập nhật bài đăng / lưu


8

Tôi đang cố gắng tạo một tin nhắn tùy chỉnh thay vì tin nhắn mặc định khi tôi lưu một bài đăng, có ai biết làm thế nào không!


7
Vẫn chưa ổn. Xin vui lòng gửi giải pháp của bạn như là một câu trả lời.
fuxia

Câu trả lời:


9

http://codex.wordpress.org/Function_Reference/register_post_type ví dụ:

    //add filter to ensure the text Book, or book, is displayed when user updates a book 
add_filter('post_updated_messages', 'codex_book_updated_messages');
function codex_book_updated_messages( $messages ) {
  global $post, $post_ID;

  $messages['book'] = array(
    0 => '', // Unused. Messages start at index 1.
    1 => sprintf( __('Book updated. <a href="%s">View book</a>'), esc_url( get_permalink($post_ID) ) ),
    2 => __('Custom field updated.'),
    3 => __('Custom field deleted.'),
    4 => __('Book updated.'),
    /* translators: %s: date and time of the revision */
    5 => isset($_GET['revision']) ? sprintf( __('Book restored to revision from %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
    6 => sprintf( __('Book published. <a href="%s">View book</a>'), esc_url( get_permalink($post_ID) ) ),
    7 => __('Book saved.'),
    8 => sprintf( __('Book submitted. <a target="_blank" href="%s">Preview book</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
    9 => sprintf( __('Book scheduled for: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Preview book</a>'),
      // translators: Publish box date format, see http://php.net/date
      date_i18n( __( 'M j, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ),
    10 => sprintf( __('Book draft updated. <a target="_blank" href="%s">Preview book</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
  );

  return $messages;
}

2

Lưu trữ tin nhắn

Một 'message'phần của $_GETmảng là những gì chịu trách nhiệm giữ giá trị thông điệp thực tế là integer. Điều này có nghĩa là mọi thứ được thông qua trong đó, sẽ được đặt thành thông điệp thực tế. Các thông điệp được lưu trữ bên trong một mảng toàn cục trong các mẫu UI UI. Nó được đặt tên $messagesvà có ba khóa cho mỗi mặc định:

  1. page
  2. post
  3. attachment

Các thông điệp được lưu trữ dưới dạng các mảng con của mảng chính $messages.

Ghi chú:

Một số điều cần lưu ý (WP core v4.0.1):

  • Không 0được sử dụng.
  • Các attachmenttin nhắn hiện đang là một hack và chỉ cần có chuỗi 'Media attachment updated.'trên mỗi khóa.
  • Tất cả các mảng con tin nhắn dài 10 phím

Cách thêm tin nhắn tùy chỉnh

Sử dụng post_updated_messagesbộ lọc:

add_filter( 'post_updated_messages', function( $messages )
{
    $messages['post'][2] = 'My awesome custom field just updated. Congratulations!';
    return $messages;
} );

Nhìn vào ~/wp-admin/edit-form-advanced.phpthông điệp nào được sử dụng cho những gì.

Dự phòng, nếu không có loại bài đăng được sử dụng, là postmảng thông báo loại bài đăng.

Các loại bài tùy chỉnh

Bạn có thể thêm bộ tin nhắn của riêng mình một cách an toàn thông qua một cuộc gọi lại trên bộ lọc bespoken. Chỉ cần đảm bảo rằng bạn sử dụng tên loại bài đăng tùy chỉnh của mình làm khóa cho mảng tin nhắn:

add_filter( 'post_updated_messages', function( $messages )
{
    $messages['my_custom_post_type'][2] = 'Go, buy some milk!';
    return $messages;
} );

Cuộc gọi lại có lẽ là tốt nhất

do_action( "load-{$pagenow}" )

0

Nghĩ rằng điều này có thể giúp một số.

Sau khi trải qua chiều dài và chiều rộng của các trang web khác nhau, tôi chỉ có thể nhận được một thông báo tùy chỉnh được hiển thị với sự trợ giúp từ điều này.

https://onextrapixel.com/10-tips-for-a-deeply-customised-wordpress-admin-area/

function frl_on_save_post($post_id, $post) {/* add warning filter when saving post */

    if($post->post_type == 'post') //test for something real here       
        add_filter('redirect_post_location', 'frl_custom_warning_filter');

}
add_action('save_post', 'frl_on_save_post', 2, 2);

function frl_custom_warning_filter($location) { /* filter redirect location to add warning parameter*/

    $location = add_query_arg(array('warning'=>'my_warning'), $location);
    return $location;
}

function frl_warning_in_notice() { /* print warning message */

    if(!isset($_REQUEST['warning']) || empty($_REQUEST['warning']))
        return;

    $warnum = trim($_REQUEST['warning']);

    /* possible warnings codes and messages */                 
    $warnings = array(
        'my_warning' => __('This is my truly custom warning!', 'frl')
    );

    if(!isset($warnings[$warnum]))
        return; 

    echo '<div class="error message"><p><strong>';
    echo $warnings[$warnum];
    echo '</strong></p></div>';
}       
add_action('admin_notices', 'frl_warning_in_notice');
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.