Как использовать мое собственное значение сеанса в Wordpress?
Как я могу использовать свое собственное (пользовательское) значение сеанса в Wordpress?
Например: $_SESSION['myname']="4lvin"
Я уже вставил session_start()
на все страницы, которые мне нужны, следующим образом.
<?php
session_start();
$_SESSION['myname'] = "4lvin";
?>
Но не работает в глобальном масштабе.
Просто работаю над собственной страницей.
Он НЕ может вызываться глобально с других страниц (используя ту же логику).
3 answers
РЕДАКТИРОВАТЬ: "ПЛАГИН НИЖЕ БОЛЬШЕ НЕ ДОСТУПЕН, ПОЭТОМУ, ПОЖАЛУЙСТА, ИСПОЛЬЗУЙТЕ ЭТОТ ПЛАГИН ВМЕСТО ЭТОГО: Плагин сеанса WordPress"
Есть хороший плагин WordPress, адаптированный из класса сеансов CodeIgniter: Плагин WP-сессий.
Когда вы активируете плагин, вы можете начать использовать объект $session
из любой точки вашей темы ($session
объект, если он глобальный). Например, чтобы использовать объект $session в файле header.php
, просто добавьте это код:
global $session;
Если вы разработчик плагинов и хотите адаптировать этот плагин к своему, вы также можете найти автономную версию в пакете. Документация плагина предоставляет разработчикам плагинов дополнительную информацию о том, как адаптироваться к вашему проекту.
Вот некоторые полезные функции как для разработчиков тем, так и для разработчиков плагинов.
Вы можете добавить данные сеанса следующим образом:
// One value
$session->set_userdata( 'username', 'john' );
// Passing array
$array = array(
'username' => 'john',
'email' => '[email protected]'
);
$session->set_userdata( $array );
Для извлечения сеанса данные:
$session->userdata( 'username' );
Для получения всех данных сеанса:
$session->all_userdata(); // returns array
Для удалить один пункт из сеанса:
$session->unset_userdata( 'username' );
Для удалить дополнительные элементы из сеанса:
$array = array(
'username' => '',
'email' => ''
);
$session->unset_userdata( $array );
Вы также можете использовать Flashdata, данные сеанса, которые будут доступны только для следующего запроса сервера, затем автоматически удаляются. Они могут быть очень полезны, когда вы используете их для информационных или сообщений о состоянии (например, "Продукт был удалено").
// Add Flashdata
$session->set_flashdata( 'item', 'value' );
// Retrieve Flashdata
$session->flashdata( 'item' );
// Preserving flashdata
// (if you need to preserve flashdata through an additional request,
// you can use this function):
$session->keep_flashdata( 'item' );
Чтобы уничтожить сеанс:
$session->sess_destroy();
Плагин также поддерживает короткие коды . Вы можете распечатать любые данные сеанса на своих публикациях или страницах:
[session key="username"]
Чтобы добраться до второго ключа:
[session key="user_data" sec_key="display_name"]
Я надеюсь, что это кому-то поможет.
WordPress не использует сеансы, поэтому ваши переменные сеанса не работают.
На самом деле, если определенные переменные определены, WordPress фактически уничтожит $_SESSION
, чтобы сохранить себя без состояния.
Но если вы действительно хотите использовать сеансы, попробуйте добавить session_start()
в начале вашего файла wp-config.php
. Это (надеюсь) запустит сеансы при каждом запуске WP, так что вы сможете устанавливать и считывать свои переменные $_SESSION
в другом месте системы.
Wordpress действительно поддерживает это.
Вам нужно добавить следующие строки в верхней части functions.php
if ( ! session_id() ) {
session_start();
}