投稿の更新/保存用のカスタムメッセージを設定する


8

投稿を保存するときに、デフォルトのメッセージではなくカスタムメッセージを作成しようとしていますが、誰でも方法を知っていますか?


7
それはまだ大丈夫ではありません。回答としてソリューションを投稿してください。
fuxia

回答:


9

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;
}

2

メッセージストレージ

配列の'message'一部は、$_GET実際のメッセージ値をとして保持する責任がありますinteger。つまり、そこに渡されるすべてのものが実際のメッセージとして設定されます。メッセージ自体は、管理UIテンプレートのグローバル配列内に保存されます。名前が付けられ$messages、デフォルトで3つのキーがあります。

  1. page
  2. post
  3. attachment

メッセージはメイン$messages配列のサブ配列として保存されます。

ノート:

覚えておくべきいくつかのこと(WPコアv4.0.1):

  • 0使用されていません。
  • attachmentメッセージは現在、ハックであり、単なる文字列を持っている'Media attachment updated.'すべてのキーに。
  • すべてのメッセージサブ配列は10キー長です

カスタムメッセージを追加する方法

post_updated_messagesフィルターを使用します。

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

見て~/wp-admin/edit-form-advanced.phpいるメッセージは何のために使用されています。

ポストタイプが使用されない場合のフォールバックは、postポストタイプのメッセージ配列です。

カスタム投稿タイプ

特注フィルターのコールバックを介して独自のメッセージセットを安全に追加できます。メッセージ配列のキーとしてカスタム投稿タイプ名を使用していることを確認してください:

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

コールバック自体はおそらく最もよくフックされています

do_action( "load-{$pagenow}" )

0

これは一部に役立つかもしれないと思った。

さまざまなサイトを縦横に調べた後、私はこれの助けを借りてカスタムメッセージを表示することしかできませんでした。

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');
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.