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

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

Хранение сообщений
Часть 'message'
массива $_GET
отвечает за хранение фактического значения сообщения в виде integer
. Это означает, что всё, что передаётся туда, будет установлено как фактическое сообщение. Сами сообщения хранятся внутри глобального массива в шаблонах административного интерфейса. Он называется $messages
и имеет три ключа по умолчанию:
page
post
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}" )

Думаю, это может быть полезным.
После долгих поисков на различных сайтах я смог отобразить пользовательское сообщение только с помощью этого кода.
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');
