WP oturumlarında değişkenler nasıl saklanır ve alınır?


28

Bazı onay kutuları ve giriş kutuları seçim kutularını içeren bir formum var ve kullanıcının bir ajax araması yoluyla ne istediğini gösterir. Sorun, kullanıcı öğeyi tıkladığında ve ayrıntı sayfasının gösterilmesi ve ardından önceki sayfaya geri dönmeye karar vermesi durumunda, önceki seçimini tekrar tıklatıp seçmesi gerekir.

Detay sayfasının düğmesi tıklandığında ve oturumdaki gerçek bilgiyi kaydettiğinde ve daha sonra sayfayı tekrar ziyaret ettiğinde değerler oturumda denetlenecek ve eğer varsa buldum.

Bu WP'de yapılabilir mi?

Evet ise nasıl?

Bunu basitleştirelim ve formumuzda böyle bir şeyin olduğunu söyleyelim:

<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" />

Formumda gönder butonunu kullanmıyorum, giriş değişikliği üzerine AJAX ile işlem yapılıyor.

Ve sonuçlarıma göre ajax yoluyla almak, detay sayfasına bir link var:

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

Değerlerimi Session'da nasıl saklayabilirim ve tarayıcıda tekrar ziyaret ederken / yeniden yüklerken / geri düğmesini kullanırken bunları nasıl arayabilirim?

Oturumu kaydedilen oturumu okuyabilir ve? Javascript? ve arama fuction'ımı zaten iyi çalışan ajax ile tetikleyin.

Sadece depolamam gerekiyor (muhtemelen, ayrıntılar düğmesinin hrefindeki $ linkine gitmeden önce ve eğer varsa oturum değişkenlerini okuyup göndermeden önce).


Cevap size yardımcı olduysa, kabul etmeyi düşünün. Bkz. » Birisi sorumu cevapladığında ne yapmalıyım? «Ve / veya» Oy kullanmak neden önemlidir? «, WordPress Geliştirme modeli hakkında daha fazla bilgiyi yardım merkezinde bulabilirsiniz .
Nicolai

Aşağıdaki bağlantının size yardımcı olacağını düşünüyorum. wordpress.stackexchange.com/questions/105453/…
Vivekanand Saraswati

Yanıtlar:


32

Oturumlar wordpress'te varsayılan olarak etkin değildir, php oturumlarını etkinleştirmek istiyorsanız, şunu ekleyin functions.php:

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

Artık $_SESSION['your-var'] = 'your-value';bir oturum değişkeni ayarlamak için kullanabilirsiniz . Oturumlardaki PHP belgelerine bir göz atın .



Güncelleştirme:

Aklımda bir değeri olan ikinci bir cevap vardı - maalesef silindi, bilgiyi buraya tekrar ekliyorum. Cevap, WP Oturum Yöneticisine , @eamann tarafından alternatif bir çözüm olarak yazılmış bir eklentiyi işaret ediyordu.
Eklenti hakkında bazı şeyler okudum, ama hiç kullanmadım çünkü - şimdiye kadar - PHP oturumlarına bağlı kalıyorum - bunları kullanamadığımda hiç sorun yaşamadım. Bu eklenti yazarın kendisi tarafından yapılan açıklama / yorumda bazı olası avantajlar hakkında buldum.


Burada özel bir alana ilişkin soruya göz atmanızı isteyebilir miyim: wordpress.stackexchange.com/questions/265852/… ?
Istiaque Ahmed,

1

adresindeki fonksiyonlarına bunu ekleyin.

<?php

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

add_action('init', 'tatwerat_startSession', 1);

1

WordPress eklentisi için yerel PHP Sessions ile bir kullanıcı adı oturumunun nasıl ayarlanacağını açıklayacağım . Bu mantığı probleminize uygulayabilirsiniz.

Bunu functions.php dosyasına ekleyin

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

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

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

  }

$ _POST ['log'], kullanıcı adı giriş kutusuna wordpress giriş formundan atıfta bulunmaktadır. Bir kullanıcı giriş yaptığında, kullanıcı adı $ _SESSION ['kullanıcı adı'] içine kaydedilir. Senin durumunda, 'log' u 'car_color' olan form değişken isimleri ile değiştirirsiniz.

Kullanıcı adını daha sonra başka bir php dosyasında

$username=$_SESSION['username'];

0

Belki de Wordpress'te olağan oturumlar yoktur ... yine de, Wordpress kullanıcıların kavramını bilir. Fonksiyonlarla belirli kullanıcılarla ilgili bilgileri yönetebilir add_user_meta,update_user_meta , get_user_meta, ve delete_user_meta.

JavaScript’te bu şekilde kaydedilen bilgilere ihtiyaç duyuyorsanız, ihtiyacınız olana uyan küçük bir PHP betiği yazabilir ve Ajax ile çağırabilirsiniz.


2
Bu sadece kullanıcı giriş yapmışsa iyidir.
Tim Hallman

0

AJAX isteğini alan PHP sayfasında, böyle $ _SESSION ayarlayın.

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

$ _SESSION değişkenine erişin

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

Bu eğitim , oturumların uygun şekilde kurulması ve atılmasıyla ilgili daha ayrıntılı olarak ele alınmaktadır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.