Come utilizzare un valore di sessione personalizzato in WordPress?

1 nov 2011, 21:25:38
Visualizzazioni: 85.4K
Voti: 19

Come posso utilizzare un valore di sessione personalizzato (custom) in WordPress?
Per esempio: $_SESSION['myname']="4lvin"

Ho già inserito session_start() in tutte le pagine necessarie come segue.

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

Ma non funziona a livello globale.
Funziona solo nella pagina stessa.
NON è richiamabile globalmente da altre pagine (usando la stessa logica).

10
Commenti

Puoi per favore chiarire la natura specifica di WordPress della tua domanda?

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

Cosa significa natura specifica di WordPress?

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

"Cosa significa natura specifica di WordPress?" - significa, in che modo la tua domanda è relativa a WordPress?

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

In che modo la mia domanda è relativa a WordPress?? Per favore, leggi la mia domanda e capirai cosa c'entra con Wordpress.

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

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

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

Le sessioni o i cookie NON sono correlati a WordPress? (oppure) WordPress non ne utilizza nessuno?

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

No. Sessions e cookies sono argomenti generali relativi a internet/browser web rispetto ai quali WordPress è completamente agnostico.

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

@Chip Bennett, Quindi... WordPress non ha alcun problema (relativo) a Sessioni/Cookie ??? Nessuno dovrebbe chiedere di questi problemi per WordPress ?????? Uh...? Quindi penso che tu non abbia abbastanza esperienza con WordPress per questo tipo di problemi.

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

Sì, sessioni e cookie sono argomenti generali, ma questa è più una questione di far funzionare le sessioni con WordPress... e dato che WP stesso non utilizza sessioni, è rilevante qui.

EAMann EAMann
1 nov 2011 23:30:03
Mostra i restanti 5 commenti
Tutte le risposte alla domanda 4
5
15

MODIFICA: "IL PLUGIN QUI SOTTO NON È PIÙ DISPONIBILE, QUINDI UTILIZZATE QUESTO PLUGIN AL SUO POSTO: WordPress Session Plugin"

C'è un buon plugin per WordPress adattato dalla classe CodeIgniter Session: WP Sessions Plugin.

Quando attivi il plugin, puoi iniziare a utilizzare l'oggetto $session da qualsiasi parte del tuo tema (l'oggetto $session è disponibile come variabile globale). Ad esempio, per utilizzare l'oggetto $session nel file header.php, aggiungi semplicemente questo codice:

global $session;

Se sei uno sviluppatore di plugin e vuoi adattare questo plugin al tuo progetto, nel pacchetto troverai anche una versione standalone. La documentazione del plugin fornisce ulteriori informazioni per gli sviluppatori su come adattarlo al proprio progetto.

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

Puoi aggiungere dati alla sessione in questo modo:

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

// Passando un 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(); // restituisce un 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 );

Puoi anche utilizzare i Flashdata, ovvero dati di sessione che saranno disponibili solo per la prossima richiesta al server, per poi essere automaticamente cancellati. Questi possono essere molto utili per messaggi informativi o di stato (es. "Prodotto eliminato").

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

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

// Preservare flashdata 
// (se hai bisogno di preservare i flashdata attraverso una richiesta aggiuntiva, 
// puoi utilizzare questa funzione):
$session->keep_flashdata( 'item' );

Per distruggere la sessione:

$session->sess_destroy();

Il plugin supporta anche gli shortcode. Puoi stampare qualsiasi dato della sessione nei tuoi post o pagine:

[session key="username"]

Per accedere a una chiave secondaria:

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

Spero che questo sia utile per qualcuno.

15 nov 2012 20:58:33
Commenti

Il plugin WP Sessions non c'è!??

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

Sì, dovresti usare questo: http://wordpress.org/plugins/wp-session-manager/ (Questo è molto migliore e stabile).

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

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

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

Perché non possiamo usare la funzionalità predefinita delle sessioni PHP in WordPress? Questa soluzione crea una dipendenza da un plugin.

Amrit Amrit
16 ott 2017 17:36:19

@Amritpal perché non tutti i server PHP/Apache supportano le sessioni. Se vuoi sviluppare un software/plugin pubblico come WP, devi considerarlo. Se è un progetto personale dove puoi modificare il server, non è un problema.

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

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

Infatti, se alcune variabili sono definite, WordPress distruggerà effettivamente $_SESSION per mantenere se stesso stateless.

Ma se vuoi davvero utilizzare le sessioni, prova ad aggiungere session_start() all'inizio del tuo file wp-config.php. Questo (si spera) avvierà le sessioni ogni volta che WP si avvia, così potrai impostare e leggere le tue variabili $_SESSION in altre parti del sistema.

1 nov 2011 23:29:23
Commenti

Ho notato che WordPress utilizza i Cookie per memorizzare alcuni dati di accesso. Quando ho stampato l'array $_COOKIE, ho potuto vedere alcuni dati. Vorrei impostare manualmente quei dati. Maggiori informazioni qui: http://stackoverflow.com/questions/21595900/how-to-bypass-wordpress-login

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

Inoltre, è consigliabile modificare il file wp-config.php per avviare la sessione? Se aggiorniamo WordPress successivamente, il file wp-config.php verrà aggiornato anch'esso?

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

Tutorial che approfondisce questo argomento http://silvermapleweb.com/using-the-php-session-in-wordpress/

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

@shasikanth no, wp-cofnig.php non viene modificato durante gli aggiornamenti.

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

@shasikanth wp-config.php non verrà aggiornato, altrimenti potresti perdere la connessione al database e altri parametri che hai impostato manualmente.

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

Una soluzione semplice senza utilizzare plugin o senza modificare il file wp-config.php è aggiornare il functions.php del tuo tema e inserire all'inizio il seguente codice:

<?php

 //File functions.php di WordPress
  if(!session_id()) {           
    session_start();            
  }

Poiché il functions.php (o cosiddetto file delle funzioni del tema) è un template incluso automaticamente nei temi di WordPress e agisce come un plugin per il tuo sito WordPress. Inoltre, se hai più di 1 tema installato sul tuo sito web, modificare il functions.php influenzerà solo il tema selezionato, non tutti (dove potresti non voler abilitare le sessioni).

29 ott 2021 14:38:30
1
-3

WordPress lo supporta.

Devi aggiungere le seguenti righe all'inizio del file functions.php

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

Perché dovresti avviare la sessione due volte?

kaiser kaiser
16 nov 2012 13:45:39