Wordpress'te kendi özel oturum değerimi nasıl kullanırım?


17

Wordpress'te kendi (özel) oturum değerimi nasıl kullanabilirim?
Örneğin:$_SESSION['myname']="4lvin"

Zaten session_start()aşağıdaki gibi ihtiyacım olan tüm sayfaya ekledim.

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

Ama küresel olarak çalışmaz.
Sadece kendi sayfasında çalışıyorum.
Başka bir sayfadan (aynı mantığı kullanarak) Global olarak çağrılamaz.


Sorunuzun WordPress'e özgü doğasını netleştirebilir misiniz ?
Chip Bennett

1
" WordPress'e özgü doğa nedir? " - yani, WordPress ile ilgili sorunuz ne şekilde ?
Chip Bennett

1
Oturum çerezleri hakkında bir soru görüyorum . WordPress'e özgü bir şey görmüyorum , bu yüzden açıklama istedim.
Chip Bennett

2
Hayır. Oturumlar ve çerezler , WordPress'in tamamen agnostik olduğu genel internet / web tarayıcı konularıdır.
Chip Bennett

5
Evet, oturumlar ve çerezler genel konulardır, ancak bu daha çok oturumların WordPress ile çalışmasını sağlamakla ilgilidir ... ve WP'nin kendisi oturumları kullanmadığı için, burada önemlidir.
EAMann

Yanıtlar:


13

DÜZENLEME: "AŞAĞIDAKİ PLUGIN DAHA FAZLA KULLANILAMIYOR, LÜTFEN PLUGIN INSTEAD: WordPress Session Plugin "

CodeIgniter Session sınıfından uyarlanmış iyi bir WordPress Eklentisi var: WP Sessions Plugin .

Eklentiyi etkinleştirdiğinizde, $sessiontemanızın herhangi bir yerinden ( $sessionglobal olduğu sürece nesne) nesne kullanmaya başlayabilirsiniz . Örneğin, $ session nesnesini header.phpdosyaya kullanmak için şu kodu eklemeniz yeterlidir:

global $session;

Bir eklenti geliştiricisiyseniz ve bu eklentiyi kendinize uyarlamak istiyorsanız , pakette bağımsız bir sürüm de bulabilirsiniz . Eklentinin dokümantasyonu, eklenti geliştiricilerine projenize nasıl adapte olacakları hakkında daha fazla bilgi verir.

İşte hem tema hem de eklenti geliştiricileri için bazı yararlı işlevler.

Bunun gibi oturum verileri ekleyebilirsiniz :

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

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

$session->set_userdata( $array );

Oturum verilerini almak için :

$session->userdata( 'username' );

Tüm oturum verilerini almak için :

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

Bir öğeyi oturumdan kaldırmak için :

$session->unset_userdata( 'username' );

Oturumdan daha fazla öğe kaldırmak için :

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

Ayrıca , yalnızca bir sonraki sunucu isteği için kullanılabilecek oturum verileri olan Flash verileri de otomatik olarak temizlenir. Bunlar bilgi veya durum mesajları için kullandığınızda çok yararlı olabilir (örn. “Ürün silindi”).

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

Oturumu yok etmek için:

$session->sess_destroy();

Eklenti ayrıca kısa kodları da destekler . Yayınlarınıza veya sayfalarınıza oturum verilerini yazdırabilirsiniz:

[session key="username"]

İkinci anahtara ulaşmak için:

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

Umarım bu birisine yardımcı olur.


1
WP Sessions Plugin orada değil! ??
Kiren Siva

1
Evet, bunu kullanmak isteyeceksiniz: wordpress.org/plugins/wp-session-manager (Bu çok daha iyi ve kararlıdır).
beytarovski


WordPress'te neden PHP varsayılan oturum işlevselliğini kullanamıyoruz? Bu çözüm bir eklentiye bağımlılık yaratır.
Amrit

@Amritpal çünkü tüm PHP / Apache sunucuları oturumları desteklemez. WP gibi genel bir yazılım / eklenti oluşturmak istiyorsanız, bunu düşünmelisiniz. Sunucuyu düzenleyebileceğiniz kişisel projesi, bu bir sorun değildir.
beytarovski

8

WordPress oturumları kullanmaz, bu yüzden oturum değişkenleriniz çalışmıyor.

Aslında, belirli değişkenler tanımlanırsa, WordPress aslında $_SESSIONkendisini vatansız tutmak için yok edecektir .

Ancak oturumları gerçekten kullanmak istiyorsanız session_start(), wp-config.phpdosyanızın başına eklemeyi deneyin . Bu (umarız) WP başladığında oturumları başlatır, böylece $_SESSIONsisteminizde başka bir yerde değişkenlerinizi ayarlayabilir ve okuyabilirsiniz .


Wordpress'in bazı giriş verilerini saklamak için Çerezler kullandığını gördüm. $ _COOKIE dizisi yazdırdığımda, bazı veriler görebiliyordum. Bu verileri manuel olarak ayarlamak istiyorum. Daha fazla bilgi için burayı tıklayın: stackoverflow.com/questions/21595900/…
shasi kanth

1
Ayrıca, oturumu başlatmak için wp-config.php dosyasını değiştirmeniz önerilir mi? Wordpress'i daha sonra güncellersek, wp-config.php dosyası da güncellenir mi?
shasi kanth


1
@shasikanth no, wp-cofnig.phpgüncellemelere dokunulmaz.
T.Todua

1
@shasikanth wp-config.phpgüncellenmez, aksi takdirde DB bağlantısını ve manuel olarak ayarladığınız diğer parametreleri kaybedebilirsiniz.
Erenor Paz

-5

Wordpress bunu destekliyor .

En üste aşağıdaki satırları eklemeniz gerekirfunctions.php

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

10
Neden oturumu iki kez başlattınız?
Kaiser
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.