Tetapkan pesan khusus untuk pembaruan / penyimpanan pos

8

Saya mencoba membuat pesan khusus alih-alih pesan default ketika saya menyimpan posting, apakah ada yang tahu bagaimana melakukannya!

Karl Barton
sumber
7
Itu belum oke. Silakan kirim solusi Anda sebagai jawaban.
fuxia

Jawaban:

9

Contoh http://codex.wordpress.org/Function_Reference/register_post_type :

    //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;
}
Ünsal Korkmaz
sumber
2

Penyimpanan Pesan

Bagian 'message'dari $_GETarray adalah apa yang bertanggung jawab untuk memegang nilai pesan aktual integer. Ini berarti bahwa semua yang diteruskan di sana, akan ditetapkan sebagai pesan aktual. Pesan itu sendiri disimpan di dalam array global di templat Admin UI. Dinamai $messagesdan memiliki tiga kunci per default:

  1. page
  2. post
  3. attachment

Pesan disimpan sebagai sub-array dari array utama $messages.

Catatan:

Beberapa hal yang perlu diingat (WP core v4.0.1):

  • Tidak 0digunakan.
  • attachmentPesan - pesan saat ini adalah peretasan dan hanya memiliki string 'Media attachment updated.'pada setiap kunci.
  • Semua sub-array pesan sepanjang 10 kunci

Bagaimana cara menambahkan pesan khusus

Gunakan post_updated_messagesfilter:

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

Lihatlah ~/wp-admin/edit-form-advanced.phppesan mana yang digunakan untuk apa.

Fallback, jika tidak ada jenis posting yang digunakan, adalah postarray pesan tipe posting.

Jenis Posting Kustom

Anda dapat dengan aman menambahkan set pesan Anda sendiri melalui panggilan balik pada filter dipesan lebih dahulu. Pastikan Anda menggunakan nama jenis pos khusus sebagai kunci untuk larik pesan:

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

Callback itu sendiri mungkin paling cocok

do_action( "load-{$pagenow}" )
kaisar
sumber
0

Kupikir ini mungkin bisa membantu.

Setelah melalui panjang dan luasnya berbagai situs saya hanya bisa mendapatkan pesan khusus ditampilkan dengan bantuan dari ini.

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');
Vemman
sumber