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

1 nov 2011, 21:25:38
Vistas: 85.4K
Votos: 19

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

Ya he insertado session_start() en todas las páginas que necesito de la siguiente manera.

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

Pero no funciona de manera global.
Solo funciona en la misma página.
NO se puede acceder globalmente desde otras páginas (usando la misma lógica).

10
Comentarios

¿Podrías aclarar la naturaleza específica de WordPress de tu pregunta?

Chip Bennett Chip Bennett
1 nov 2011 21:48:10

¿Qué es la naturaleza específica de WordPress?

夏期劇場 夏期劇場
1 nov 2011 21:49:13

"¿Qué es la naturaleza específica de WordPress?" - eso significa, ¿de qué manera está relacionada tu pregunta con WordPress?

Chip Bennett Chip Bennett
1 nov 2011 21:51:24

¿De qué manera está relacionada mi pregunta con WordPress? Por favor, lee mi pregunta y entenderás qué tiene que ver con WordPress.

夏期劇場 夏期劇場
1 nov 2011 21:52:59

Veo una pregunta sobre cookies de sesión. No veo nada específico sobre WordPress, por eso pedí aclaraciones.

Chip Bennett Chip Bennett
1 nov 2011 21:53:41

¿Acaso sesiones o cookies NO están relacionados con WordPress? (o) ¿Acaso WordPress no utiliza ninguno de ellos?

夏期劇場 夏期劇場
1 nov 2011 21:55:56

No. Sessions y cookies son temas generales de internet/navegadores web con los que WordPress es completamente agnóstico.

Chip Bennett Chip Bennett
1 nov 2011 21:57:33

@Chip Bennett, Entonces... ¿WordPress no tiene ningún problema (relacionado) con Sessions/Cookies??? ¿Nadie debería preguntar sobre estos problemas en WordPress???? Huh...? Creo que no tienes suficiente experiencia con WordPress para este tipo de problemas.

夏期劇場 夏期劇場
1 nov 2011 22:04:31

Sí, las sesiones y las cookies son temas generales, pero esto es más una cuestión de hacer que las sesiones funcionen con WordPress... y dado que WP en sí mismo no utiliza sesiones, es relevante aquí.

EAMann EAMann
1 nov 2011 23:30:03
Mostrar los 5 comentarios restantes
Todas las respuestas a la pregunta 4
5
15

EDITADO: "EL PLUGIN A CONTINUACIÓN YA NO ESTÁ DISPONIBLE, POR FAVOR UTILICE ESTE PLUGIN EN SU LUGAR: WordPress Session Plugin"

Existe un buen plugin para WordPress adaptado de la clase Session de CodeIgniter: WP Sessions Plugin.

Cuando activas el plugin, puedes comenzar a usar el objeto $session desde cualquier parte de tu tema (el objeto $session está disponible como global). Por ejemplo, para usar el objeto $session en el archivo header.php, simplemente añade este código:

global $session;

Si eres desarrollador de plugins y deseas adaptar este plugin con el tuyo, también puedes encontrar la versión standalone en el paquete. La documentación del plugin proporciona más información para desarrolladores sobre cómo adaptarlo a tu proyecto.

Aquí hay algunas funciones útiles tanto para desarrolladores de temas como de plugins.

Puedes agregar datos de sesión de esta manera:

// Un valor
$session->set_userdata( 'username', 'john' );

// Pasando un 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 los datos de sesión:

$session->all_userdata(); // devuelve un array

Para eliminar un elemento de la sesión:

$session->unset_userdata( 'username' );

Para eliminar varios elementos de la sesión:

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

También puedes usar Flashdata, que son datos de sesión que solo estarán disponibles para la siguiente solicitud al servidor y luego se borrarán automáticamente. Estos pueden ser muy útiles cuando los usas para mensajes informativos o de estado (por ejemplo, "El producto ha sido eliminado").

// Agregar Flashdata
$session->set_flashdata( 'item', 'value' );

// Recuperar Flashdata
$session->flashdata( 'item' );

// Conservar Flashdata 
// (si necesitas conservar los datos flash a través de una solicitud adicional, 
// puedes usar esta función):
$session->keep_flashdata( 'item' );

Para destruir la sesión:

$session->sess_destroy();

El plugin también admite shortcodes. Puedes imprimir cualquier dato de sesión en tus publicaciones o páginas:

[session key="username"]

Para acceder a una segunda clave:

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

Espero que esto le sea útil a alguien.

15 nov 2012 20:58:33
Comentarios

¡¡El plugin WP Sessions no está!!

Kiren S Kiren S
26 dic 2013 12:02:23

Sí, deberías usar este otro: http://wordpress.org/plugins/wp-session-manager/ (Este es mucho mejor y más estable).

kuzey beytar kuzey beytar
28 dic 2013 03:55:13

Otro plugin https://wordpress.org/plugins/wp-native-php-sessions/

nu everest nu everest
5 dic 2016 21:45:22

¿Por qué no podemos usar la funcionalidad de sesión predeterminada de PHP en WordPress? Esta solución crea dependencia en un plugin.

Amrit Amrit
16 oct 2017 17:36:19

@Amritpal porque no todos los servidores PHP/Apache admiten sesiones. Si quieres desarrollar un software/plugin público como WP, debes tenerlo en cuenta. Si es un proyecto personal donde puedes editar el servidor, no hay problema.

kuzey beytar kuzey beytar
16 oct 2017 17:44:43
5

WordPress no utiliza sesiones, por eso tus variables de sesión no están funcionando.

De hecho, si ciertas variables están definidas, WordPress destruirá $_SESSION para mantenerse sin estado (stateless).

Pero si realmente deseas usar sesiones, intenta agregar session_start() al principio de tu archivo wp-config.php. Esto (con suerte) iniciará sesiones cada vez que WordPress se inicie, por lo que podrás establecer y leer tus variables $_SESSION en otras partes del sistema.

1 nov 2011 23:29:23
Comentarios

Vi que WordPress usa Cookies para almacenar algunos datos de inicio de sesión. Cuando imprimí el array $_COOKIE, pude ver algunos datos. Me gustaría establecer esos datos manualmente. Más información aquí: http://stackoverflow.com/questions/21595900/how-to-bypass-wordpress-login

shasi kanth shasi kanth
6 feb 2014 09:13:42

También, ¿es recomendable modificar el archivo wp-config.php para iniciar sesión? Si actualizamos WordPress más tarde, ¿se actualizará también el archivo wp-config.php?

shasi kanth shasi kanth
29 may 2014 12:56:05

Tutorial que discute esto con más detalle http://silvermapleweb.com/using-the-php-session-in-wordpress/

nu everest nu everest
5 dic 2016 21:46:42

@shasikanth no, el archivo wp-cofnig.php no se modifica durante las actualizaciones.

T.Todua T.Todua
8 mar 2018 13:36:35

@shasikanth el archivo wp-config.php no se actualiza, de lo contrario podrías perder la conexión a la base de datos y otros parámetros que hayas configurado manualmente.

Erenor Paz Erenor Paz
14 ago 2019 17:32:32
0

Una solución sencilla sin usar plugins o sin modificar el archivo wp-config.php es actualizar el archivo functions.php de tu tema e insertar al principio lo siguiente:

<?php

 //Archivo functions.php de WordPress
  if(!session_id()) {           
    session_start();            
  }

Dado que el archivo functions.php (también conocido como archivo de funciones del tema) es una plantilla incluida automáticamente en los temas de WordPress y actúa como un plugin para tu sitio WordPress. Además, si tienes más de 1 tema instalado en tu sitio web, modificar el functions.php solo afectará al tema seleccionado, no a todos (donde puede que no quieras habilitar sesiones).

29 oct 2021 14:38:30
1
-3

WordPress sí lo soporta.

Necesitas agregar las siguientes líneas al inicio del archivo functions.php

if ( ! session_id() ) {
    session_start();
}
2 nov 2011 08:53:59
Comentarios

¿Por qué iniciarías la sesión dos veces?

kaiser kaiser
16 nov 2012 13:45:39