Bagaimana cara menyimpan dan menerima variabel dalam sesi WP?

28

Saya memiliki formulir dengan beberapa kotak centang dan kotak centang kotak pilih dan itu menunjukkan apa yang diinginkan pengguna melalui panggilan ajax. Masalahnya adalah bahwa ketika pengguna mengklik item dan halaman detail ditampilkan dan kemudian memutuskan untuk kembali ke halaman sebelumnya dia perlu mengklik dan memilih pilihan sebelumnya lagi.

Saya ingin membuat WP untuk menyimpan semua opsi dalam sesi ketika tombol ke halaman detail diklik dan menyimpan info aktual di sesi dan kemudian ketika dia mengunjungi halaman lagi nilai-nilai akan diperiksa dalam sesi dan diatur jika ada ditemukan.

Bisakah itu dilakukan di WP?

Jika ya, bagaimana?

Mari kita sederhanakan itu dan katakan bahwa kita memiliki sesuatu seperti ini di formulir kita:

<input class="car_color" type="checkbox" name="car_color" value="1" />
<input class="car_color" type="checkbox" name="car_color" value="2" />
<input class="car_color" type="checkbox" name="car_color" value="8" />
<input class="car_color" type="checkbox" name="car_color" value="4" />
<input class="car_color" type="checkbox" name="car_color" value="6" />

Saya tidak menggunakan tombol kirim di formulir saya, itu ditangani melalui AJAX pada perubahan input.

Dan dalam hasil saya dapatkan melalui ajax saya memiliki tautan ke halaman detail:

<a class="detail-info-link" href="<?php echo $url ?>">

Tahu bagaimana saya bisa menyimpan nilai-nilai saya di Sesi dan memanggil mereka ketika mengunjungi kembali / memuat kembali / tombol kembali di browser?

Saya harus bisa membaca sesi penyimpanan barang dan menggunakannya via Javascript? dan memicu fungsi pencarian saya melalui ajax yang sudah berfungsi dengan baik.

Saya hanya perlu menyimpan (mungkin sebelum pergi ke $ link di href oleh tombol detail dan membaca dan mengirim variabel sesi (jika ada).

Derfder
sumber
Jika jawabannya bermanfaat bagi Anda, maka pertimbangkan untuk menerimanya. Lihat » Apa yang harus saya lakukan ketika seseorang menjawab pertanyaan saya? «Dan / atau» Mengapa memilih itu penting? «, Informasi lebih lanjut tentang model Pengembangan WordPress tersedia di pusat bantuan .
Nicolai
Saya pikir tautan di bawah ini akan membantu Anda. wordpress.stackexchange.com/questions/105453/...
Vivekanand Saraswati

Jawaban:

32

Sesi tidak diaktifkan di wordpress secara default, jika Anda ingin mengaktifkan sesi php tambahkan ini di awal Anda functions.php:

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

Anda sekarang dapat menggunakan $_SESSION['your-var'] = 'your-value';untuk mengatur variabel sesi. Lihatlah dokumentasi PHP pada sesi-sesi .



Memperbarui:

Ada jawaban kedua, yang menurut saya memiliki nilai juga - sayangnya terhapus, saya menambahkan kembali informasi di sini. Jawabannya merujuk ke WP Session Manager sebuah plugin yang ditulis oleh @eamann sebagai solusi alternatif.
Saya membaca beberapa hal tentang plugin tersebut, tetapi tidak pernah menggunakannya karena - sejauh ini - saya tetap menggunakan sesi PHP - tidak pernah memiliki masalah sehingga saya tidak dapat menggunakannya. Ini adalah pernyataan / komentar oleh penulis plugin sendiri yang saya temukan tentang beberapa kemungkinan keuntungan.

Nicolai
sumber
bolehkah saya meminta Anda untuk melihat pertanyaan terkait bidang khusus di sini: wordpress.stackexchange.com/questions/265852/… ?
Istiaque Ahmed
1

tambahkan ini di dalam functions.php Anda

<?php

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

add_action('init', 'tatwerat_startSession', 1);
Tuan Rumah
sumber
1

Saya akan menjelaskan cara mengatur sesi nama pengguna dengan plugin Native PHP Sessions for WordPress . Anda dapat menerapkan logika ini untuk masalah Anda.

Tambahkan ini ke file functions.php Anda

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

  if ( isset( $_POST['wp-submit'] ) ){

    $_SESSION['username']=$_POST['log'];

  }

$ _POST ['log'] mereferensikan kotak input nama pengguna dari formulir login wordpress. Ketika seorang pengguna masuk, nama pengguna disimpan ke $ _SESSION ['nama pengguna']. Dalam kasus Anda, Anda akan mengubah 'log' ke nama variabel bentuk yang Anda miliki 'car_color'.

Referensi nama pengguna nanti di beberapa file php lain oleh

$username=$_SESSION['username'];
embulldogs99
sumber
0

Mungkin tidak ada sesi biasa di Wordpress ... pokoknya, Wordpress tahu konsep pengguna. Anda dapat mengelola informasi yang berkaitan dengan pengguna tertentu dengan fungsi add_user_meta, update_user_meta, get_user_meta, dan delete_user_meta.

Jika Anda memerlukan informasi yang disimpan dengan cara ini dalam JavaScript, Anda dapat menulis skrip PHP kecil yang memuntahkan apa yang Anda butuhkan, dan menyebutnya dengan Ajax.

Philipp Zedler
sumber
2
Ini hanya baik jika pengguna masuk.
Tim Hallman
0

Pada halaman PHP yang menerima permintaan AJAX, atur $ _SESSION seperti ini.

$car_color = <user selected form input data>;
$_SESSION['car_color'] = $car_color;

Akses variabel $ _SESSION

if(isset($_SESSION['car_color'])) {
    $value = $_SESSION['car_color'];
} else {
    $value = 'Please select a car color.';
}

Tutorial ini membahas lebih detail tentang pengaturan dan pembuangan sesi yang benar.

nu everest
sumber