Cum să folosești propria valoare de sesiune personalizată în WordPress?

1 nov. 2011, 21:25:38
Vizualizări: 85.4K
Voturi: 19

Cum pot folosi propria valoare de sesiune (personalizată) în WordPress?
De exemplu: $_SESSION['myname']="4lvin"

Am inserat deja session_start() în toate paginile unde am nevoie, după cum urmează.

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

Dar nu funcționează la nivel global.
Funcționează doar în pagina curentă.
NU poate fi apelată global din alte pagini (folosind aceeași logică).

10
Comentarii

Poți să clarifici, te rog, natura specifică WordPress a întrebării tale?

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

Ce înseamnă natura specifică WordPress?

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

"Ce înseamnă natura specifică WordPress?" - adică, în ce mod este întrebarea ta legată de WordPress?

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

În ce fel este întrebarea mea legată de WordPress?? Vă rog să citiți întrebarea mea și veți înțelege ce anume se referă la WordPress.

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

Văd o întrebare despre cookie-uri de sesiune. Nu văd nimic specific pentru WordPress, motiv pentru care am cerut clarificări.

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

Sesiunea sau cookie-urile NU sunt legate de WordPress? (sau) WordPress nu folosește niciunul dintre acestea?

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

Nu. Sesiunile și cookie-urile sunt subiecte generale ale internetului/navigatoarelor web, față de care WordPress este complet agnostic.

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

@Chip Bennett, Deci... WordPress nu are nicio problemă (legată de) Sesiuni/Cookie-uri ??? Nimeni nu ar trebui să întrebe despre aceste probleme pentru WordPress ?????? Hm...? Cred că nu ai suficientă experiență cu WordPress pentru acest gen de probleme.

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

Da, sesiunile și cookie-urile sunt subiecte generale, dar aici este vorba mai mult despre cum să faci sesiunile să funcționeze cu WordPress... și deoarece WP în sine nu folosește sesiuni, este relevant aici.

EAMann EAMann
1 nov. 2011 23:30:03
Arată celelalte 5 comentarii
Toate răspunsurile la întrebare 4
5
15

EDIT: "PLUGINUL DE MAI JOS NU MAI ESTE DISPONIBIL, AȘA CĂ VĂ RUGĂM SĂ FOLOSIȚI ÎN LOC ACEST PLUGIN: WordPress Session Plugin"

Există un bun plugin WordPress adaptat din clasa de sesiune CodeIgniter: WP Sessions Plugin.

Când activați pluginul, puteți începe să utilizați obiectul $session din orice parte a temei ($session obiectul este disponibil ca global). De exemplu, pentru a utiliza obiectul $session în fișierul header.php, pur și simplu adăugați acest cod:

global $session;

Dacă sunteți dezvoltator de pluginuri și doriți să adaptați acest plugin cu al vostru, puteți găsi și versiunea standalone în pachet. Documentația pluginului oferă mai multe informații pentru dezvoltatorii de pluginuri despre cum să vă adaptați la proiectul vostru.

Iată câteva funcții utile atât pentru dezvoltatorii de teme, cât și pentru cei de pluginuri.

Puteți adăuga date de sesiune astfel:

// O singură valoare
$session->set_userdata( 'username', 'john' );

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

$session->set_userdata( $array );

Pentru a prelua datele de sesiune:

$session->userdata( 'username' );

Pentru a obține toate datele de sesiune:

$session->all_userdata(); // returnează un array

Pentru a elimina un singur element din sesiune:

$session->unset_userdata( 'username' );

Pentru a elimina mai multe elemente din sesiune:

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

Puteți utiliza și Flashdata, care sunt date de sesiune care vor fi disponibile doar pentru următoarea cerere de server și apoi vor fi șterse automat. Acestea pot fi foarte utile atunci când le utilizați pentru mesaje informative sau de stare (de exemplu, „Produsul a fost șters”).

// Adăugare Flashdata
$session->set_flashdata( 'item', 'value' );

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

// Păstrare flashdata 
// (dacă aveți nevoie să păstrați flashdata printr-o cerere suplimentară, 
// puteți utiliza această funcție):
$session->keep_flashdata( 'item' );

Pentru a distruge sesiunea:

$session->sess_destroy();

Pluginul suportă și shortcode-uri. Puteți afișa orice date de sesiune în articolele sau paginile dvs.:

[session key="username"]

Pentru a ajunge la a doua cheie:

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

Sper că acest lucru va fi util pentru cineva.

15 nov. 2012 20:58:33
Comentarii

Plugin-ul WP Sessions nu este acolo!??

Kiren S Kiren S
26 dec. 2013 12:02:23

Da, ar fi bine să folosești acesta: http://wordpress.org/plugins/wp-session-manager/ (Este mult mai bun și stabil).

kuzey beytar kuzey beytar
28 dec. 2013 03:55:13

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

nu everest nu everest
5 dec. 2016 21:45:22

De ce nu putem folosi funcționalitatea implicită de sesiune PHP în WordPress? Această soluție creează o dependență de un plugin.

Amrit Amrit
16 oct. 2017 17:36:19

@Amritpal deoarece nu toate serverele PHP/Apache acceptă sesiuni. Dacă vrei să construiești un software/plugin public precum WP, trebuie să iei în considerare acest aspect. Dacă este un proiect personal unde poți edita serverul, nu reprezintă o problemă.

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

WordPress nu utilizează sesiuni, de aceea variabilele tale de sesiune nu funcționează.

De fapt, dacă anumite variabile sunt definite, WordPress va distruge efectiv $_SESSION pentru a rămâne fără stare.

Dar dacă chiar dorești să folosești sesiuni, încearcă să adaugi session_start() la începutul fișierului tău wp-config.php. Acest lucru va (sperăm) porni sesiunile de fiecare dată când WP pornește, astfel încât vei putea seta și citi variabilele tale $_SESSION în altă parte a sistemului.

1 nov. 2011 23:29:23
Comentarii

Am observat că WordPress folosește cookie-uri pentru a stoca unele date de autentificare. Când am afișat array-ul $_COOKIE, am putut vedea unele date. Aș dori să setez manual acele date. Mai multe informații aici: http://stackoverflow.com/questions/21595900/how-to-bypass-wordpress-login

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

De asemenea, este recomandat să modificăm fișierul wp-config.php pentru a porni sesiunea? Dacă actualizăm WordPress ulterior, fișierul wp-config.php va fi actualizat și el?

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

Tutorial care discută acest subiect în detaliu http://silvermapleweb.com/using-the-php-session-in-wordpress/

nu everest nu everest
5 dec. 2016 21:46:42

@shasikanth nu, wp-cofnig.php nu este afectat la actualizări.

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

@shasikanth wp-config.php nu va fi actualizat, altfel ai putea pierde conexiunea la baza de date și alți parametri pe care i-ai setat manual.

Erenor Paz Erenor Paz
14 aug. 2019 17:32:32
0

O soluție simplă fără a utiliza un plugin sau fără a modifica fișierul wp-config.php este să actualizezi fișierul functions.php al temei tale și să inserezi la început următoarele:

<?php

 //Fișierul functions.php WordPress
  if(!session_id()) {           
    session_start();            
  }

Deoarece functions.php (sau așa-numitul fișier de funcții al temei) este un șablon inclus automat în temele WordPress și acționează ca un plugin pentru site-ul tău WordPress. Mai mult, dacă ai mai mult de 1 temă instalată pe site-ul tău, modificarea functions.php va afecta doar tema aleasă, nu toate (unde poate nu dorești să activezi sesiunile).

29 oct. 2021 14:38:30
1
-3

WordPress suportă acest lucru.

Trebuie să adăugați următoarele linii la începutul fișierului functions.php

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

De ce ai începe sesiunea de două ori?

kaiser kaiser
16 nov. 2012 13:45:39