usuario una tag son nueva mostrar lugar las fuente fragmento etiquetas entrada cómo cuáles cuales completa añadir wordpress session-management

wordpress - una - ¿cuáles son las etiquetas en wp?



Gestión de sesiones de Wordpress (9)

Estoy colocando un sitio usando Wordpress y me gustaría aprovechar sus sesiones. Pero no encuentro ningún complemento, ni siquiera documentación. ¿Alguna sugerencia o referencia antes de empezar a piratearla?

Nota: Pregunto si y cómo WP usa sesiones PHP estándar, no cómo agregar sesiones PHP, por ejemplo, usando session_start (). Aparentemente, cualquier estado que WP mantenga se logra por otros medios. Entonces, si quiero usar sesiones de PHP, necesito agregarlas y mantenerlas por mi cuenta, usando técnicas como las del hilo.

¡Gracias a todos!




Coloque este código en wp-config.php en la primera línea:

if (!session_id()) { session_start(); }

Coloque este código en header.php del tema en la primera línea:

session_start();

Entonces mantendrá todas las variables de sesión.


Conectar una función con session_start() en wp_loaded parece funcionar en este caso.


Considere usar la API transitoria de WordPress

Los valores almacenados usando la API transitoria son visibles para todos los usuarios, no solo para el usuario actual, dependiendo del identificador único utilizado para recuperar el transitorio, usted podría asignar a cada usuario un identificador único que esencialmente causa que un transitorio se comporte de manera muy parecida a una sesión.

Consideraciones adicionales:

  • Dependiendo de la configuración de un usuario con caché de objetos, etc., los transitorios pueden no estar almacenados en la BD (por ejemplo, memcached), usar transitorios para las sesiones puede significar que los datos pueden volverse voluminosos y llenar la memoria rápidamente (en el uso de memcached).

  • Además, parece que WP no hace la recolección automática de basura para transitorios: https://wordpress.stackexchange.com/questions/6602/are-transients-garbage-collected


Es una muy mala idea modificar los archivos WP Core para la capacidad de usar sesiones. La mejor forma que he encontrado es llamar a session_start() desde el gancho de la acción init .

function kana_init_session() { session_start(); } add_action(''init'', ''kana_init_session'', 1);

Puede colocarlo en el archivo functions.php de su tema.

El artículo detallado se puede encontrar aquí: http://www.kanasolution.com/2011/01/session-variable-in-wordpress/


Para lo que necesito hacer, la mejor respuesta implica:

  1. Para permitir que la cookie de WordPress persista en todos los subdominios, instale el plugin Root Cookie.
  2. sub1.domain.com tiene wordpress; sub2.domain.com es otro sitio. Desde el otro sitio ( sub2 ), leo las cookies para identificar quién es el usuario y si el usuario ha iniciado sesión.

Mis cookies son las siguientes:

[wordpress_909bb230b32f5f0473202684d863b2e0] => mshaffer|1255298821|d0249fced9c323835c5bf7e84ad3ffea [wordpress_logged_in_909bb230b32f5f0473202684d863b2e0] => mshaffer|1255298821|56e9c19541ecb596a1fa0995da935700

Usando PHP, puedo recorrer las cookies, analizar los pares key=>value . Estas cookies me permiten saber que [mshaffer] tiene una cookie almacenada en wordpress, y también está autenticada como logged_in . La caducidad de la cookie es 1255298821 .

En sub2 , puedo consultar la base de datos de wordpress y obtener la información del usuario:

SELECT * FROM `wp_users` WHERE user_login = ''mshaffer'' ... agarrar user_id , user_email de esta consulta

SELECT * FROM `wp_usermeta` WHERE user_id = ''$user_id'' ... toma muchos otros datos de wp

Con esta información, puedo agregar a mi cookie / variable de sesión sub2 y hacer lo que quiero con los datos. Puedo identificar si estoy conectado, y mi nombre de usuario ... lo que me permite obtener muchos datos diferentes. Ahora puedo usar la autenticación de WordPress en mi sub2.domain.com y redireccionar en consecuencia.

monte

{X:


Si quiere usar sus propios valores de sesión, Wordpress sí lo admite .

Necesita agregar las siguientes líneas en la parte superior de wp-config.php

if (!session_id()) { session_start(); }

A continuación, agregue la siguiente línea en la parte superior de header.php

session_start();


Wordpress no parece usar ninguna sesión.

La mejor manera de hacerlo es usar los ganchos de acción que proporciona.