Wordpress'te özel çerezler ayarlama


13

Wordpress sitemdeki belirli bir sayfaya dönen kullanıcıları yeniden yönlendirmek için çerezler ayarlamaya çalışıyorum.

Bu 2 şeyle ilgili bazı tavsiyelerde bulunmak istiyorum:

  1. Wordpress php dosyalarında, bir yönlendirmeyi işlemek için herhangi bir içerik yüklemeden önce çerezler nerede kontrol edilmelidir? Bunun diğerleri üzerinde olması gereken iyi bir dosya var mı?
  2. Wordpress içinde bir çerezi nasıl düzgün bir şekilde ayarlayabilirim? setcookie('cookie_name', 'cookie_value', time()+4000);sistemime herhangi bir çerez kaydetmiyor gibi görünüyor.

Ah, bunu init () içine bağlamam gerektiğini fark ettim. ÇÖZÜM: Çerezleri ayarlayıp kontrol edecek function.php içinde bir işlev oluşturdum. bunun düzgün çalışması için, işlevi tanımladıktan sonra, işlevin dışında şunu çağırın: add_action ('init', 'function-name');

4
Kendi sorunuza cevap verebilirsiniz ...
40XUserNotFound

2
Aslında, açıkça teşvik edilmektedir. Lütfen kendiniz cevaplayın. Bunu daha uygun göründüğü için WordPress.SE'ye de gönderiyorum.

Teşekkürler çocuklar - bir Wordpress alanı olduğunu fark etmedim. Ve bahşiş için kendime cevap için teşekkürler :) APpreciated, + 1s.
Atticus

Yanıtlar:


17

1 - Çerezleri kontrol edebilir ve 'init' kancası gibi herhangi bir çıkıştan önce çağrılan kancaları kullanarak yönlendirmenizi yapabilirsiniz:

<?php

// Hook the function "redirect()" on to the "init" action
add_action('init', 'redirect');

// redirect() may redirect the user depending on the cookies he has
function redirect(){
  /* CODE */
}

?>

2 - Çerezleri ayarlamanın en iyi yolu 'init' kancasını şu şekilde kullanmaktır:

<?php

add_action('init', 'my_setcookie');

// my_setcookie() set the cookie on the domain and directory WP is installed on
function my_setcookie(){
  $path = parse_url(get_option('siteurl'), PHP_URL_PATH);
  $host = parse_url(get_option('siteurl'), PHP_URL_HOST);
  $expiry = strtotime('+1 month');
  setcookie('my_cookie_name_1', 'my_cookie_value_1', $expiry, $path, $host);
  /* more cookies */
  setcookie('my_cookie_name_2', 'my_cookie_value_2', $expiry, $path, $host);
}

?>

Bu daha tutarlıdır, www.example.com/blog adresinde bir blogunuz varsa , coockie (ler)

  • www.example.com
  • www.example.com/store
  • example.com
  • www2.example.com
  • ...

Güncelleme

Andre R Kohl'un cevabında yeni fark ettiğim - drzaus


Birden fazla değişkeni nasıl yerleştirirsiniz, örneğin yalnızca 'my_cookie_1' değişkeni yerine Ad, Soyadı, Rastgele1, Rastgele2.
Damainman

1
Sadece daha fazlasını ekleyinsetcookie()
Nabil Kadimi

Oh, çerezlerin çerez başına sadece bir değişken tuttuğunu bilmiyordum. Yukarıda zaman ve url koduna sahip olmak zorunda kalmadan birden fazla çerez ayarlamanın bir yolu var mı, böylece daha az kod anlamına geliyor mu? Değişken haline getirilirler mi?
Damainman


düzeltme:COOKIE_DOMAIN
drzaus

11

Muhtemelen sabitleri kullanmalısınız COOIKEPATHve COOKIE_DOMAINWP 3.0'dan beri var olan

setcookie("your_cookie", $your_value, time()+3600, COOKIEPATH, COOKIE_DOMAIN);

7

Bunu fark etmem gerektiğini fark ettim init().

ÇÖZÜM: Çerezleri ayarlayıp kontrol edecek function.php içinde bir işlev oluşturdum. bunun düzgün çalışması için, işlevi tanımladıktan sonra, işlevin dışında şunu çağırın:

add_action('init', 'function-name'); 

1

Bu şekilde çalıştı:

    add_action( 'init', 'function-to-setcookie' ); 

    function function-to-setcookie(){

        //use condition here , in which page you eant to set cookie
        //choose a page where you want the cookie to be set
        $pageurl = get_option('siteurl').'/set-cookie-page'; 

       // use a function to get current page url and use condition 
       //to match it with the desired page where you want to set cookie 
       if ( $pageurl === current_page_url() ) {
           setcookie( 'cookie_name', 'cookie_value', $expiryTime, $cookiepath, $siteurl );
         }

    }

Lütfen kod biçimlendirmenizi düzeltin.
Jevuska

Ayrıca kaynak hakkında küçük bir içerik gerçekten yararlıdır.
10:10 bueltge
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.