2013-05-21 2 views
0

Я пишу плагин 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, похоже, были снесены, когда показываются сообщения администратора.

+1

глобальный, как правило, плохая практика, разбор переменных, хотя функции –

+0

это выглядит как флэш-сообщения, так почему бы не использовать сессии для этого? Я знаю, что wp не использует сеансы, но вы можете запустить сеанс в своем плагине и перейти оттуда. Кроме того, так, как вы сделали свой код, действительно очень плохо ... это действительно зависит от того, как вы вызываете ваши функции, и если они вызываются в одном и том же цикле выполнения. – Twisted1919

+0

[прочитайте об этом] (http://betterwp.net/8-using-global-variables-in-wordpress/), в последнем разделе статьи объясняется, как добиться того, чего вы хотите. – montrealist

ответ

1

Вы пробовали сеанс? Я думаю, ваша проблема будет исправлена.

взглянуть на:

http://www.php.net/manual/en/function.session-start.php

+0

Ugh. Ужасное решение (не вы виноваты!), Но он выполняет эту работу. Благодаря! –

Смежные вопросы