Я создаю плагин для WordPress. Все функции, которые я пишу, «подключены» к определенным событиям WordPress. Это означает, что мне трудно создавать переменные, которые мне нужно использовать в нескольких функциях.
Например:
Есть две функции, которые где-то подключены:
Display_if_facebook_connected() {
if (Check_facebook_connected()) { return 'Yes, connected!' }
return '';
}
Display_if_facebook_connected() {
if (!Check_facebook_connected()) { return 'No, not connected!' }
return '';
}
И они оба выполняют очень тяжелую функцию:
Check_facebook_connected() { // some heavy facebook connect stuff, return bool }
В основном я стараюсь не запускать тяжелую функцию дважды, поскольку она будет иметь тот же результат.
В этом случае было бы безопасно сделать $_COOKIE['check_facebook_connected'] = true;
и затем прочитать эту переменную в Display_if_facebook_connected()
?
Под безопасным я подразумеваю, что пользователь не может видеть или изменять значение. Поскольку cookie на самом деле никогда не устанавливается , я думаю / надеюсь, он просто исчезнет в конце кода php.
Я не удивлюсь, если есть какой-то лучший способ или лучший вариант, чтобы сделать это, но с моим ограниченным пониманием php я не могу придумать ни одного.
UPDATE:
О сессиях: мне не нужно, чтобы значения сохранялись на нескольких страницах, только одна загрузка страницы. Поскольку Wordpress не использует сессии, я не вижу причин для его изменения.
Я немного поэкспериментировал, и проблема остается:
Весь следующий код находится в основном файле моего плагина Wordpress. Насколько я понимаю, файл плагина «включается» при каждом запросе, поэтому весь код запускается каждый раз, когда я обновляю свой тестовый пост.
Сначала я создаю переменную:
$myplugin_connected = false;
Затем я подключаю свою функцию в нужном месте:
add_shortcode( 'myplugin_notconnected', 'myplugin_notconnected_func' );
Это в основном перехватывает функцию myplugin_notconnected_func()
в шорткоде [myplugin_notconnected]. (A шорткод - это текст в сообщении WordPress, с некоторым идентификатором в скобках []. Wordpress загружает код, связанный с шорткодом, всякий раз, когда он появляется.)
Вот myplugin_notconnected_func()
:
function myplugin_notconnected_func( $atts, $content = null ) {
echo '<p>connected: ' . var_export($myplugin_connected, true) . '</p>';
return '$contents';
}
И вот результат:
подключено: NULL
Вот почему я пытался использовать переменные $ _COOKIE, потому что, по крайней мере, они сохраняются на всем экземпляре php. Я прошу прощения за отсутствие последовательности, я учусь на ходу, и я определенно ценю помощь!