Установка пользовательских сообщений при обновлении/сохранении записи

21 мая 2011 г., 21:03:12
Просмотры: 16.4K
Голосов: 8

Я пытаюсь сделать пользовательское сообщение вместо стандартного при сохранении записи. Кто-нибудь знает, как это сделать?

1
Комментарии

Еще не все в порядке. Пожалуйста, опубликуйте ваше решение в виде ответа.

fuxia fuxia
21 мая 2011 г. 21:21:24
Все ответы на вопрос 3
0

http://codex.wordpress.org/Function_Reference/register_post_type пример:

    // добавляем фильтр для отображения текста Книга или книга при обновлении записи книги
add_filter('post_updated_messages', 'codex_book_updated_messages');
function codex_book_updated_messages( $messages ) {
  global $post, $post_ID;

  $messages['book'] = array(
    0 => '', // Не используется. Сообщения начинаются с индекса 1.
    1 => sprintf( __('Книга обновлена. <a href="%s">Просмотреть книгу</a>'), esc_url( get_permalink($post_ID) ) ),
    2 => __('Произвольное поле обновлено.'),
    3 => __('Произвольное поле удалено.'),
    4 => __('Книга обновлена.'),
    /* переводчики: %s: дата и время ревизии */
    5 => isset($_GET['revision']) ? sprintf( __('Книга восстановлена до ревизии от %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
    6 => sprintf( __('Книга опубликована. <a href="%s">Просмотреть книгу</a>'), esc_url( get_permalink($post_ID) ) ),
    7 => __('Книга сохранена.'),
    8 => sprintf( __('Книга отправлена. <a target="_blank" href="%s">Предпросмотр книги</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
    9 => sprintf( __('Книга запланирована на: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Предпросмотр книги</a>'),
      // переводчики: Формат даты в блоке публикации, см. http://php.net/date
      date_i18n( __( 'j M, Y @ G:i' ), strtotime( $post->post_date ) ), esc_url( get_permalink($post_ID) ) ),
    10 => sprintf( __('Черновик книги обновлен. <a target="_blank" href="%s">Предпросмотр книги</a>'), esc_url( add_query_arg( 'preview', 'true', get_permalink($post_ID) ) ) ),
  );

  return $messages;
}
23 сент. 2011 г. 08:33:51
0

Хранение сообщений

Часть 'message' массива $_GET отвечает за хранение фактического значения сообщения в виде integer. Это означает, что всё, что передаётся туда, будет установлено как фактическое сообщение. Сами сообщения хранятся внутри глобального массива в шаблонах административного интерфейса. Он называется $messages и имеет три ключа по умолчанию:

  1. page
  2. post
  3. attachment

Сообщения хранятся как подмассивы основного массива $messages.

Примечания:

Некоторые моменты, которые стоит учитывать (ядро WP версии 4.0.1):

  • Значение 0 не используется.
  • Сообщения для вложений (attachment) в настоящее время являются костылём и просто содержат строку 'Медиафайл обновлён.' для каждого ключа.
  • Все подмассивы сообщений содержат 10 ключей

Как добавить пользовательские сообщения

Используйте фильтр post_updated_messages:

add_filter( 'post_updated_messages', function( $messages )
{
    $messages['post'][2] = 'Моё потрясающее пользовательское поле только что обновилось. Поздравляю!';
    return $messages;
} );

Посмотрите в ~/wp-admin/edit-form-advanced.php, чтобы узнать, какое сообщение используется для чего.

Резервный вариант, если тип записи не используется - это массив сообщений типа записи post.

Пользовательские типы записей

Вы можете безопасно добавить свой набор сообщений через callback на указанный фильтр. Просто убедитесь, что используете имя вашего пользовательского типа записи в качестве ключа для массива сообщений:

add_filter( 'post_updated_messages', function( $messages )
{
    $messages['my_custom_post_type'][2] = 'Иди, купи молока!';
    return $messages;
} );

Сам callback, вероятно, лучше всего подключить на

do_action( "load-{$pagenow}" )
28 нояб. 2014 г. 13:38:00
0

Думаю, это может быть полезным.

После долгих поисков на различных сайтах я смог отобразить пользовательское сообщение только с помощью этого кода.

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

function frl_on_save_post($post_id, $post) {/* добавляем фильтр предупреждения при сохранении записи */

    if($post->post_type == 'post') //проверяем что-то конкретное здесь       
        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) { /* фильтруем URL перенаправления для добавления параметра предупреждения */

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

function frl_warning_in_notice() { /* выводим сообщение с предупреждением */

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

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

    /* возможные коды предупреждений и сообщения */                 
    $warnings = array(
        'my_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');
24 окт. 2018 г. 13:27:54