Как использовать мое собственное значение сеанса в Wordpress?


Как я могу использовать свое собственное (пользовательское) значение сеанса в Wordpress?
Например: $_SESSION['myname']="4lvin"

Я уже вставил session_start() на все страницы, которые мне нужны, следующим образом.

<?php
session_start();
$_SESSION['myname'] = "4lvin";
?>

Но не работает в глобальном масштабе.
Просто работаю над собственной страницей.
Он НЕ может вызываться глобально с других страниц (используя ту же логику).

 17
Author: 夏期劇場, 2011-11-01

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"]

Я надеюсь, что это кому-то поможет.

 14
Author: beytarovski, 2013-12-28 01:57:20

WordPress не использует сеансы, поэтому ваши переменные сеанса не работают.

На самом деле, если определенные переменные определены, WordPress фактически уничтожит $_SESSION, чтобы сохранить себя без состояния.

Но если вы действительно хотите использовать сеансы, попробуйте добавить session_start() в начале вашего файла wp-config.php. Это (надеюсь) запустит сеансы при каждом запуске WP, так что вы сможете устанавливать и считывать свои переменные $_SESSION в другом месте системы.

 9
Author: EAMann, 2011-11-01 21:29:23

Wordpress действительно поддерживает это.

Вам нужно добавить следующие строки в верхней части functions.php

if ( ! session_id() ) {
    session_start();
}
 -3
Author: Alvin, 2015-06-14 13:10:40