Wie verwende ich meinen eigenen benutzerdefinierten Sitzungswert in Wordpress?

17

Wie kann ich meinen eigenen (benutzerdefinierten) Sitzungswert in Wordpress verwenden?
Beispielsweise:$_SESSION['myname']="4lvin"

Ich habe bereits session_start()alle Seiten eingefügt, die ich wie folgt brauche.

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

Aber nicht global.
Ich arbeite nur an der eigenen Seite.
Es kann NICHT global von einer anderen Seite aus aufgerufen werden (mit derselben Logik).

夏 夏 期
quelle
Können Sie bitte den WordPress-spezifischen Charakter Ihrer Frage klären?
Chip Bennett
1
" Was ist WordPress-spezifisch? " - das heißt, inwiefern hängt Ihre Frage mit WordPress zusammen ?
Chip Bennett
1
Ich sehe eine Frage zu Sitzungscookies . Ich sehe nichts spezielles für WordPress , weshalb ich um Klarstellung gebeten habe.
Chip Bennett
2
Nein. Sitzungen und Cookies sind allgemeine Internet- / Webbrowser-Themen, für die WordPress völlig unabhängig ist.
Chip Bennett
5
Ja, Sitzungen und Cookies sind allgemeine Themen, aber dies ist eher eine Frage der Funktionsweise von Sitzungen mit WordPress ... und da WP selbst keine Sitzungen verwendet, ist dies hier relevant.
EAMann

Antworten:

13

BEARBEITEN : "DAS PLUGIN UNTEN IST NICHT MEHR LIEFERBAR, BITTE BENUTZEN SIE DIESES PLUGIN STATT: WordPress Session Plugin "

Es gibt ein gutes WordPress-Plugin, das von der CodeIgniter-Session-Klasse angepasst wurde: WP Sessions Plugin .

Wenn Sie das Plugin aktivieren, können Sie $sessionvon überall in Ihrem Design ( $sessionsolange global) mit der Verwendung von Objekten beginnen . Wenn Sie beispielsweise das $ session-Objekt in eine header.phpDatei einfügen möchten, fügen Sie einfach diesen Code hinzu:

global $session;

Wenn Sie ein Plug-in-Entwickler sind und dieses Plug-in an Ihr Plug-in anpassen möchten, finden Sie im Paket auch eine eigenständige Version . Die Dokumentation des Plugins enthält weitere Informationen für Plugin-Entwickler zur Anpassung an Ihr Projekt.

Hier finden Sie einige nützliche Funktionen für Theme- und Plugin-Entwickler.

Sie können Sitzungsdaten wie folgt hinzufügen :

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

// Passing array
$array = array(
    'username' => 'john',
    'email'    => '[email protected]'
);

$session->set_userdata( $array );

So rufen Sie Sitzungsdaten ab:

$session->userdata( 'username' );

So rufen Sie alle Sitzungsdaten ab:

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

So entfernen Sie ein Element aus der Sitzung:

$session->unset_userdata( 'username' );

So entfernen Sie weitere Elemente aus der Sitzung:

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

Sie können auch Flashdata verwenden. Hierbei handelt es sich um Sitzungsdaten, die nur für die nächste Serveranforderung verfügbar sind und dann automatisch gelöscht werden. Diese können sehr nützlich sein, wenn Sie sie für Informations- oder Statusmeldungen verwenden (z. B. „Produkt wurde gelöscht“).

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

So zerstören Sie die Sitzung:

$session->sess_destroy();

Das Plugin unterstützt auch Shortcodes . Sie können Sitzungsdaten auf Ihren Posts oder Seiten drucken:

[session key="username"]

So erreichen Sie den zweiten Schlüssel:

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

Ich hoffe das hilft jemandem.

beytarovski
quelle
1
WP Sessions Plugin ist nicht da! ??
Kiren Siva
1
Ja, du wirst das benutzen wollen: wordpress.org/plugins/wp-session-manager (Das ist viel besser und stabiler).
Beytarovski
Warum können wir die PHP-Standardsitzungsfunktionalität in WordPress nicht verwenden? Diese Lösung schafft Abhängigkeit von einem Plugin.
Amrit
@Amritpal, da nicht alle PHP / Apache-Server Sitzungen unterstützen. Wenn Sie eine öffentliche Software / ein Plugin wie WP erstellen möchten, müssen Sie darüber nachdenken. Wenn es sich um ein persönliches Projekt handelt, in dem Sie den Server bearbeiten können, ist das kein Problem.
Beytarovski
8

WordPress verwendet keine Sitzungen, deshalb funktionieren Ihre Sitzungsvariablen nicht.

In der Tat, wenn bestimmte Variablen definiert sind, wird WordPress tatsächlich zerstören $_SESSION, um sich selbst zustandslos zu halten .

Wenn Sie jedoch wirklich Sitzungen verwenden möchten, fügen Sie diese session_start()am Anfang Ihrer wp-config.phpDatei hinzu. Dadurch werden (hoffentlich) Sitzungen bei jedem Start von WP gestartet, sodass Sie Ihre $_SESSIONVariablen an anderer Stelle im System festlegen und lesen können.

EAMann
quelle
Ich habe gesehen, dass Wordpress Cookies verwendet, um einige Anmeldedaten zu speichern. Als ich das Array $ _COOKIE druckte, konnte ich einige Daten sehen. Ich möchte diese Daten manuell einstellen. Mehr Infos hier: stackoverflow.com/questions/21595900/…
shasi kanth
1
Wird außerdem empfohlen, die Datei wp-config.php zu ändern, um die Sitzung zu starten? Wird die Datei wp-config.php auch aktualisiert, wenn wir Wordpress später aktualisieren?
Shasi kanth
Tutorial, das dies beschreibt mehr silvermapleweb.com/mit-the-php-session-inwordpress
Nu Everest
1
@ Shasikanth Nein, wp-cofnig.phpwird nicht auf Updates berührt.
T.Todua
1
@shasikanth wp-config.phpwird nicht aktualisiert, da Sie sonst die DB-Verbindung und andere manuell eingestellte Parameter verlieren könnten.
Erenor Paz
-5

Wordpress unterstützt es .

Sie müssen die folgenden Zeilen oben in hinzufügenfunctions.php

if ( ! session_id() ) {
    session_start();
}
Alvin
quelle
10
Warum würden Sie die Sitzung zweimal starten?
Kaiser