Я пишу плагин WordPress. Я хочу показать пользовательское сообщение после сохранения сообщения. Это сообщение будет зависеть от результата функции, вызванной при сохранении сообщения.Глобальные переменные исчезают в плагине WordPress
Вот мой код:
add_action('save_post', 'my_save_post_function');
function my_save_post_function() {
global $msg;
$msg = "Foo bar";
...
}
add_filter('post_updated_messages', 'my_post_updated_messages_function');
function my_post_updated_messages_function($messages) {
global $msg;
$messages["post"][1] = $msg; // !! $msg is undefined !!
...
}
Почему $msg
не определено?
Есть ли способ получить результат из действия save_post
? Я пробовал всевозможные трюки. Даже данные $_POST
, похоже, были снесены, когда показываются сообщения администратора.
глобальный, как правило, плохая практика, разбор переменных, хотя функции –
это выглядит как флэш-сообщения, так почему бы не использовать сессии для этого? Я знаю, что wp не использует сеансы, но вы можете запустить сеанс в своем плагине и перейти оттуда. Кроме того, так, как вы сделали свой код, действительно очень плохо ... это действительно зависит от того, как вы вызываете ваши функции, и если они вызываются в одном и том же цикле выполнения. – Twisted1919
[прочитайте об этом] (http://betterwp.net/8-using-global-variables-in-wordpress/), в последнем разделе статьи объясняется, как добиться того, чего вы хотите. – montrealist