Setare mesaje personalizate pentru actualizarea/salvarea postării

21 mai 2011, 21:03:12
Vizualizări: 16.4K
Voturi: 8

Încerc să creez un mesaj personalizat în locul mesajului implicit când salvez o postare, știe cineva cum să fac asta!

1
Comentarii

Încă nu este în regulă. Te rog să postezi soluția ta ca răspuns.

fuxia fuxia
21 mai 2011 21:21:24
Toate răspunsurile la întrebare 3
0

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

    //adaugă un filtru pentru a asigura că textul Carte, sau carte, este afișat când utilizatorul actualizează o carte
add_filter('post_updated_messages', 'codex_book_updated_messages');
function codex_book_updated_messages( $messages ) {
  global $post, $post_ID;

  $messages['book'] = array(
    0 => '', // Neutilizat. Mesajele încep de la indexul 1.
    1 => sprintf( __('Carte actualizată. <a href="%s">Vezi cartea</a>'), esc_url( get_permalink($post_ID) ) ),
    2 => __('Câmp personalizat actualizat.'),
    3 => __('Câmp personalizat șters.'),
    4 => __('Carte actualizată.'),
    /* translators: %s: data și ora reviziei */
    5 => isset($_GET['revision']) ? sprintf( __('Carte restaurată la revizia din %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
    6 => sprintf( __('Carte publicată. <a href="%s">Vezi cartea</a>'), esc_url( get_permalink($post_ID) ) ),
    7 => __('Carte salvată.'),
    8 => sprintf( __('Carte trimisă. <a target="_blank" href="%s">Previzualizează cartea</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
    9 => sprintf( __('Carte programată pentru: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Previzualizează cartea</a>'),
      // translators: Formatul datei în caseta de publicare, vezi http://php.net/date
      date_i18n( __( 'j M, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ),
    10 => sprintf( __('Ciornă de carte actualizată. <a target="_blank" href="%s">Previzualizează cartea</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
  );

  return $messages;
}
23 sept. 2011 08:33:51
0

Stocarea Mesajelor

Partea 'message' din array-ul $_GET este responsabilă pentru păstrarea valorii reale a mesajului ca integer. Aceasta înseamnă că tot ce este transmis acolo, va fi setat ca mesaj efectiv. Mesajele în sine sunt stocate într-un array global în șabloanele UI Admin. Se numește $messages și are trei chei în mod implicit:

  1. page
  2. post
  3. attachment

Mesajele sunt stocate ca sub-array-uri ale array-ului principal $messages.

Note:

Câteva lucruri de reținut (WP core v4.0.1):

  • Valoarea 0 nu este utilizată.
  • Mesajele attachment sunt în prezent un hack și au doar șirul 'Media attachment updated.' pentru fiecare cheie.
  • Toate sub-array-urile de mesaje au 10 chei

Cum să adăugați mesaje personalizate

Utilizați filtrul post_updated_messages:

add_filter( 'post_updated_messages', function( $messages )
{
    $messages['post'][2] = 'Câmpul meu personalizat tocmai s-a actualizat. Felicitări!';
    return $messages;
} );

Consultați ~/wp-admin/edit-form-advanced.php pentru a vedea ce mesaj este folosit pentru ce.

Opțiunea implicită, dacă nu este utilizat niciun tip de postare, este array-ul de mesaje al tipului de postare post.

Tipuri de Postări Personalizate

Puteți adăuga în siguranță propriul set de mesaje printr-un callback pe filtrul menționat. Asigurați-vă că utilizați numele tipului de postare personalizat ca cheie pentru array-ul de mesaje:

add_filter( 'post_updated_messages', function( $messages )
{
    $messages['my_custom_post_type'][2] = 'Du-te și cumpără niște lapte!';
    return $messages;
} );

Callback-ul în sine este probabil cel mai bine agățat pe

do_action( "load-{$pagenow}" )
28 nov. 2014 13:38:00
0

Am crezut că acest lucru ar putea fi de ajutor pentru unii.

După ce am parcurs în lung și în lat diverse site-uri, am reușit să afișez un mesaj personalizat doar cu ajutorul acestui cod.

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

function frl_on_save_post($post_id, $post) {/* adaugă un filtru de avertizare la salvarea articolului */

    if($post->post_type == 'post') //testează pentru ceva real aici       
        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) { /* filtrează locația de redirecționare pentru a adăuga parametrul de avertizare */

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

function frl_warning_in_notice() { /* afișează mesajul de avertizare */

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

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

    /* coduri posibile de avertizare și mesaje */                 
    $warnings = array(
        'my_warning' => __('Acesta este mesajul meu personalizat de avertizare!', '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');
24 oct. 2018 13:27:54