Come usare il mio valore di sessione personalizzato in Wordpress?


17

Come posso usare il mio valore di sessione (personalizzato) in Wordpress?
Per esempio:$_SESSION['myname']="4lvin"

Ho già inserito session_start()tutte le pagine di cui ho bisogno come segue.

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

Ma non funziona a livello globale.
Sto solo lavorando sulla pagina personale.
NON è richiamabile globalmente da altre pagine (usando la stessa logica).


Puoi chiarire la natura specifica di WordPress della tua domanda?
Chip Bennett,

1
" Qual è la natura specifica di WordPress? " - ciò significa, in che modo la tua domanda è correlata a WordPress ?
Chip Bennett,

1
Vedo una domanda sui cookie di sessione . Non vedo nulla di specifico su WordPress , motivo per cui ho chiesto chiarimenti.
Chip Bennett,

2
No. Le sessioni e i cookie sono argomenti generali di Internet / browser Web per i quali WordPress è completamente agnostico.
Chip Bennett,

5
Sì, sessioni e cookie sono argomenti generali, ma si tratta più di far funzionare le sessioni con WordPress ... e poiché WP stesso non utilizza le sessioni, qui è rilevante.
EAMann

Risposte:


13

EDIT: "IL PLUGIN QUI SOTTO NON È DISPONIBILE PIÙ, PER FAVORE UTILIZZARE QUESTO PLUGIN INSTEAD: Plugin Sessione WordPress "

Esiste un buon plugin per WordPress adattato dalla classe di sessione CodeIgniter: WP Sessions Plugin .

Quando si attiva il plug-in, è possibile iniziare a utilizzare l' $sessionoggetto da qualsiasi punto del tema ( $sessionoggetto purché globale). Ad esempio, per utilizzare l'oggetto $ session nel header.phpfile, è sufficiente aggiungere questo codice:

global $session;

Se sei uno sviluppatore di plug-in e desideri adattare questo plug-in al tuo, puoi trovare anche la versione standalone nel pacchetto. La documentazione del plug-in fornisce ulteriori informazioni agli sviluppatori di plug-in su come adattarsi al proprio progetto.

Ecco alcune utili funzioni per gli sviluppatori di temi e plugin.

È possibile aggiungere i dati della sessione in questo modo:

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

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

$session->set_userdata( $array );

Per recuperare i dati della sessione:

$session->userdata( 'username' );

Per ottenere tutti i dati della sessione:

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

Per rimuovere un elemento dalla sessione:

$session->unset_userdata( 'username' );

Per rimuovere più elementi dalla sessione:

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

È inoltre possibile utilizzare Flashdata, ovvero i dati della sessione che saranno disponibili solo per la successiva richiesta del server, vengono quindi cancellati automaticamente. Questi possono essere molto utili quando li usi per messaggi informativi o di stato (ad es. "Il prodotto è stato eliminato").

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

Per distruggere la sessione:

$session->sess_destroy();

Il plugin supporta anche codici brevi . Puoi stampare qualsiasi dato di sessione sui tuoi post o pagine:

[session key="username"]

Per raggiungere la seconda chiave:

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

Spero che questo aiuti per qualcuno.


1
WP Sessions Plugin non c'è! ??
Kiren Siva,

1
Sì, ti consigliamo di usarlo: wordpress.org/plugins/wp-session-manager (è molto meglio e stabile).
beytarovski,


Perché non possiamo usare la funzionalità di sessione predefinita PHP in WordPress? Questa soluzione crea dipendenza da un plugin.
Amrit,

@Amritpal perché non tutti i server PHP / Apache supportano le sessioni. Se vuoi creare un software / plugin pubblico come WP, devi pensarci. Se il suo progetto personale è in grado di modificare il server, non è un problema.
beytarovski,

8

WordPress non utilizza le sessioni, ecco perché le variabili di sessione non funzionano.

È un dato di fatto, se determinate variabili sono definite, WordPress si distruggerà effettivamente $_SESSIONper rimanere apolide .

Ma se vuoi davvero usare le sessioni, prova ad aggiungere session_start()all'inizio del tuo wp-config.phpfile. Questo (si spera) avvierà le sessioni ogni volta che WP si avvia, quindi sarai in grado di impostare e leggere le tue $_SESSIONvariabili altrove nel sistema.


Ho visto che Wordpress utilizza i cookie per memorizzare alcuni dati di accesso. Quando ho stampato l'array $ _COOKIE, ho potuto vedere alcuni dati. Vorrei impostare quei dati manualmente. Maggiori informazioni qui: stackoverflow.com/questions/21595900/...
Shasi kanth

1
Inoltre, si consiglia di modificare il file wp-config.php, per iniziare la sessione? Se aggiorniamo Wordpress in un secondo momento, anche il file wp-config.php viene aggiornato?
Shasi Kanth,


1
@shasikanth no, wp-cofnig.phpnon viene toccato sugli aggiornamenti.
T.Todua,

1
@shasikanth wp-config.phpnon verrà aggiornato, altrimenti potresti perdere la connessione DB e altri parametri che hai impostato manualmente.
Erenor Paz,

-5

Wordpress lo supporta .

È necessario aggiungere le seguenti righe nella parte superiore difunctions.php

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

10
Perché dovresti iniziare la sessione due volte?
Kaiser
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.