¿Cómo usar mi propio valor de sesión personalizado en Wordpress?

14

¿Cómo puedo usar mi propio valor de sesión (personalizado) en Wordpress?
Por ejemplo: $_SESSION['myname']="4lvin"

Ya inserté session_start() en toda la página que necesito como sigue.

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

Pero no funciona a nivel mundial.
Solo estoy trabajando en la página de sí mismo.
NO se puede llamar globalmente desde otras páginas (usando la misma lógica).

    
pregunta 夏期劇場 01.11.2011 - 20:25

3 respuestas

12

EDITAR: "EL PLUGIN A CONTINUACIÓN NO ESTÁ DISPONIBLE MÁS, POR FAVOR UTILICE ESTE PLUGIN EN SU LUGAR: Complemento de sesión de WordPress "

Hay un buen complemento de WordPress adaptado de la clase de sesión CodeIgniter: Complemento de sesiones WP .

Cuando activa el complemento, puede comenzar a utilizar el objeto $session desde cualquier lugar de su tema (objeto $session siempre que sea global). Por ejemplo, para usar $ objeto de sesión en el archivo header.php , simplemente agregue este código:

global $session;
  

Si usted es un desarrollador de complementos y desea adaptar este complemento con el suyo, también puede encontrar versión independiente en el paquete. La documentación del complemento proporciona más información para los desarrolladores de complementos sobre cómo adaptarse a su proyecto.

Aquí hay algunas funciones útiles para los desarrolladores de temas y complementos.

Puedes agregar datos de sesión como estos:

// One value
$session->set_userdata( 'username', 'john' );

// Passing array
$array = array(
    'username' => 'john',
    'email'    => 'john@gmail.com'
);

$session->set_userdata( $array );

Para recuperar datos de sesión:

$session->userdata( 'username' );

Para obtener todos datos de sesión:

$session->all_userdata(); // returns array

Para eliminar un elemento de la sesión:

$session->unset_userdata( 'username' );

Para eliminar más elementos de la sesión:

$array = array(
    'username' => '',
    'email'    => ''
);
$session->unset_userdata( $array );

También puede utilizar Flashdata , que son datos de sesión que solo estarán disponibles para la próxima solicitud del servidor, y luego se borran automáticamente. Estos pueden ser muy útiles cuando los usa para informativo o mensajes de estado (por ejemplo, "El producto ha sido eliminado").

// 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' );

Para destruir sesión:

$session->sess_destroy();

El complemento también admite códigos cortos . Puede imprimir cualquier dato de sesión en sus publicaciones o páginas:

[session key="username"]

Para llegar a la segunda clave:

[session key="user_data" sec_key="display_name"]

Espero que esto ayude a alguien.

    
respondido por el dino 15.11.2012 - 19:58
6

WordPress no usa sesiones, es por eso que las variables de tu sesión no funcionan.

De hecho, si se definen ciertas variables, WordPress destruirá $_SESSION para mantenerse sin estado .

Pero si realmente desea utilizar sesiones, intente agregar session_start() al comienzo de su archivo wp-config.php . Esto (con suerte) iniciará las sesiones cada vez que se inicie el WP, por lo que luego podrá configurar y leer las variables $_SESSION en otras partes del sistema.

    
respondido por el EAMann 01.11.2011 - 22:29
-5

Wordpress lo admite .

Debe agregar las siguientes líneas en la parte superior de functions.php

if ( ! session_id() ) {
    session_start();
}
    
respondido por el Alvin 02.11.2011 - 07:53

Lea otras preguntas en las etiquetas