Wie erstellt und zeigt man Sitzungen in Word Press?

Ich bin neu in WordPress, kenne aber alle erforderlichen PHP-Kenntnisse. Ich verwende ein Formular, um eine Sitzung auf einer Seite zu erstellen und dann auf diese Sitzungen auf einer anderen Seite zuzugreifen. Ich habe das schon ohne WordPress gemacht. Was ich brauche, ist jemand sagt mir, wie man das in WordPress macht. Welche Dateien muss ich bei WordPress ändern, welchen Code soll ich in welche Datei eingeben?

Der Hauptteil ist google-map-api, um die Entfernung zwischen zwei Orten zu berechnen

Hier ist mein Code soweit:
22.php Datei:

 

1111.php Datei:

      

Solutions Collecting From Web of "Wie erstellt und zeigt man Sitzungen in Word Press?"

Sie möchten den Init-Hook zum Starten der Sitzung verwenden, wie z. B .:

 function start_session() { if(!session_id()) { session_start(); } } add_action('init', 'start_session', 1); function end_session() { session_destroy (); } add_action('wp_logout', 'end_session'); add_action('wp_login', 'end_session'); 

Dies würde in der Datei functions.php gehen.

Ich schlage vor, dass Sie hier nach mehr Informationen suchen:

https://codex.wordpress.org/Plugin_API/Hooks

TomC hat Recht, aber darauf aufbauend, hier ist was ich tue. Hauptsächlich verwende ich dies mit einem globalen Objekt, das ich in die Session serialisiere, um es zu speichern und zu demialisieren. Hier habe ich gerade ein Array Ihrer Variablen verwendet. Auf diese Weise brauchen Sie sich keine Gedanken über das Speichern in der Sitzung zu machen und die Verwendung der Sitzung kann leicht für andere Daten erweitert werden.

Meine hauptsächliche Verwendung ist für Einkaufskörbe und Bestellungen, also sind richtige Sanitisierung, validation und Noncens wichtig , aber sie werden hier weggelassen, um die Beispiele sauber zu halten. Siehe https://developer.wordpress.org/plugins/security/nonces/ und https://codex.wordpress.org/Validating_Sanitizing_and_Escaping_User_Data

Angenommen, dies alles geht in Ihr Thema, haben Sie init-Code ähnlich TomC in functions.php

 add_action( 'init', 'setup_session' ); function setup_session() { session_start(); global $map_data; if (isset($_SESSION['map_data'])) { $map_data = unserialize($_SESSION['map_data']); } else { $map_data = array(); } process_get(); /* chain it after session setup, but could also hook into init with a lower priority so that $_GET always writes over older session data, or put your own action here to give multiple functions access to your sessions */ } add_action( 'shutdown', 'save_session' ); function save_session() { global $map_data; if (isset($map_data)) { $_SESSION['map_data'] = serialize($map_data); } } function process_get() { // do modify this to: // check nonce // sanitise // validate ` global $map_data; if ( isset($_GET["pickup"]) || isset($_GET["pickupadd"]) || isset($_GET["dropoff"]) || isset($_GET["dropoffadd"]) || isset($_GET["km"]) ) { $map_data["pickup"] = $_GET["pickup"]; $map_data["pickupadd"] = $_GET["pickupadd"]; $map_data["dropoff"] = $_GET["dropoff"]; $map_data["dropoffadd"] = $_GET["dropoffadd"]; $map_data["km"] = $_GET["km"]; } // if any of these $_GET vars is set, replace the whole array } 

Sie haben auch Recht, dass dies in Ihre Vorlagendateien gehen kann, solange Sie Ihre Sitzung starten, bevor PHP die Header sendet. In einem gut geschriebenen Thema (und davon ausgehend, dass Sie keine schlecht geschriebenen Plugins ausführen), bevor Ihr HTML-Tag funktioniert. Das Einbinden in WP-Aktionen ist in dieser Hinsicht etwas robuster, aber wenn Sie die $ _GET-Verarbeitung in eine Vorlage einfügen, können Sie sie problemlos auf einer Seite speichern, anstatt sie auf allen Seiten auszuführen.

Sie können einen Schritt weiter gehen, obwohl dies in Ihrem Fall mehr Aufwand als Sie benötigen, und benutzerdefinierten Sitzungscode verwenden: https://pippinsplugins.com/storing-session-data-in-wordpress-without-_session/