¿Cómo almacenar y recibir variables en las sesiones de WP?


28

Tengo un formulario con algunas casillas de verificación y recuadros de selección y muestra lo que el usuario quiere a través de una llamada ajax. El problema es que cuando el usuario hace clic en el elemento y se muestra la página de detalles y luego decide volver a la página anterior, debe hacer clic y seleccionar su elección anterior nuevamente.

Me gustaría hacer que WP almacene todas las opciones en la sesión cuando se haga clic en el botón de la página de detalles y guarde la información real en la sesión y luego, cuando vuelva a visitar la página, los valores se verificarán en las sesiones y se establecerán si hay alguno. encontró.

¿Podría hacerse eso en WP?

Si es así, ¿cómo?

Simplifiquemos demasiado y digamos que tenemos algo como esto en nuestra forma:

<input class="car_color" type="checkbox" name="car_color" value="1" />
<input class="car_color" type="checkbox" name="car_color" value="2" />
<input class="car_color" type="checkbox" name="car_color" value="8" />
<input class="car_color" type="checkbox" name="car_color" value="4" />
<input class="car_color" type="checkbox" name="car_color" value="6" />

No uso el botón Enviar en mi formulario, se maneja a través de AJAX en el cambio de entrada.

Y en mis resultados a través de ajax tengo un enlace a la página de detalles:

<a class="detail-info-link" href="<?php echo $url ?>">

¿Alguna idea de cómo puedo almacenar mis valores en la sesión y llamarlos cuando vuelvo a visitar / recargar / volver al botón en el navegador?

Necesito poder leer el material almacenado en la sesión y usarlo a través de? Javascript? y activar mi función de búsqueda a través de ajax que ya está funcionando bien.

Solo necesito almacenar (probablemente antes de ir a $ link en href por botón de detalle y leer y enviar variables de sesión (si existen).


Si la respuesta fue útil para usted, considere aceptarla. Ver » ¿Qué debo hacer cuando alguien responde mi pregunta? «Y / o» ¿Por qué es importante votar? «, Hay más información sobre el modelo de desarrollo de WordPress disponible en el centro de ayuda .
Nicolai

Creo que el siguiente enlace te ayudará. wordpress.stackexchange.com/questions/105453/…
Vivekanand Saraswati

Respuestas:


32

Las sesiones no están habilitadas en wordpress de forma predeterminada, si desea activar sesiones php agregue esto al comienzo de su functions.php:

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

Ahora puede usar $_SESSION['your-var'] = 'your-value';para establecer una variable de sesión. Eche un vistazo a la documentación de PHP sobre las sesiones .



Actualizar:

Hubo una segunda respuesta, que, en mi opinión, también tenía un valor: desafortunadamente se eliminó, estoy volviendo a agregar la información aquí. La respuesta se refería a WP Session Manager, un complemento escrito por @eamann como una solución alternativa.
Leí algunas cosas sobre el complemento, pero nunca lo usé porque, hasta ahora, me quedo con las sesiones de PHP, nunca tuve el problema de que no pudiera usarlas. Esta es una declaración / comentario del propio autor del complemento que encontré sobre algunas posibles ventajas.


¿puedo pedirle que eche un vistazo a una pregunta relacionada con un campo personalizado aquí: wordpress.stackexchange.com/questions/265852/… ?
Istiaque Ahmed

1

agregue esto en en functions.php

<?php

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

add_action('init', 'tatwerat_startSession', 1);

1

Explicaré cómo configurar una sesión de nombre de usuario con el complemento Native PHP Sessions para WordPress . Puede aplicar esta lógica a su problema.

Agregue esto a su archivo functions.php

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

  if ( isset( $_POST['wp-submit'] ) ){

    $_SESSION['username']=$_POST['log'];

  }

$ _POST ['log'] hace referencia al cuadro de entrada del nombre de usuario desde el formulario de inicio de sesión de WordPress. Cuando un usuario inicia sesión, el nombre de usuario se almacena en $ _SESSION ['nombre de usuario']. En su caso, cambiaría 'log' por los nombres de variables de formulario que tiene 'car_color'.

Haga referencia al nombre de usuario más adelante en algún otro archivo php por

$username=$_SESSION['username'];

0

Tal vez no hay sesiones habituales en Wordpress ... de todos modos, Wordpress conoce el concepto de usuarios. Puede gestionar la información relativa a usuarios específicos con las funciones add_user_meta, update_user_meta, get_user_meta, y delete_user_meta.

Si necesita la información guardada de esta manera en JavaScript, puede escribir un pequeño script PHP que vomite lo que necesita y llamarlo con Ajax.


2
Esto solo es bueno si el usuario ha iniciado sesión.
Tim Hallman

0

En la página PHP que recibe la solicitud AJAX, establezca $ _SESSION de esta manera.

$car_color = <user selected form input data>;
$_SESSION['car_color'] = $car_color;

Acceda a la variable $ _SESSION

if(isset($_SESSION['car_color'])) {
    $value = $_SESSION['car_color'];
} else {
    $value = 'Please select a car color.';
}

Este tutorial entra en más detalles sobre la configuración adecuada y la eliminación de sesiones.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.