2016-07-19 3 views
0

短いストーリーですが、すでにクリックされた投稿をWordPressループに含めることを除外しようとしています。だから、クッキーに追加の値を格納するPHP

ユーザーがこのようなポストを訪れたとき、私はポストIDのに基づいてクッキーを設定しています:

$post_id = the_ID(); 
setcookie('post-id', serialize($post_id), time()+3600); 

しかし、私は、このクッキーを取得し、私ができるようにそれに別のポストIDに追加するにはどうすればよいですワードプレスのループから除外するためにクッキーに格納されている投稿IDの配列を持っていますか?

私はデータをデシリアライズしてからCookieを設定し直してみましたが、私は正しい構文が得られていないと思います。

多くの援助が必要です。

UPDATE

は、ここに私のループの参照です:

$args = array (
     'post_type'    => 'post', 
     'post_status'   => 'publish', 
     'orderby'    => 'rand', 
     'date_query'    => array('after' => $desktop_posts_after), // Show posts after certain date 
     'cat'     => $cat_ID, // Show posts from same category as post 
     'post__not_in'   => array($cookie_post_ids), // Hide current post from loop 
     'posts_per_page'   => $desktop_posts, // Get number of posts to display for desktop 

); 

注:ACFからループ内のいくつかの変数がある見ることができ、これらは意図的なものであり、働いています。重要な部分は、"post__not_in" => array($cookie_post_ids)という変数で、Cookieに格納されている投稿の投稿IDを入力しようとしています。

+1

あなたがしようとしたものを示してください。私たちはあなたのためにコードを書いていません、あなたが書いたものを修正するのに役立つかもしれません。 –

+0

あなたは値を直接シリアル化しています。新しい値をプッシュして値をシリアライズした後、まず空の配列を作成する必要があります。 –

+0

ああ、それは理にかなっている@shashikant。私はもう少しそれを探検します。 – Christian

答えて

0

私は約PHP sessionsを読み、1の内側に、このデータを格納するお勧めします。

<?php 

session_start(); 

$posts = array_key_exists('post_ids', $_SESSION) ? (array) $_SESSION['post_ids'] : []; 

$post_id = the_ID(); 

$posts[$post_id] = null; 

$_SESSION['post_ids'] = $posts; 

あなたはクッキーに保管したい場合、あなたはポストIDの配列をシリアル化する必要があります:

両方の例については
<?php 

$post_id = the_ID(); 

$posts = array_key_exists('post-id', $_COOKIE) ? (string) $_COOKIE['post-id'] : []; 

if (is_string($_COOKIE['post-id'])) { 
    $posts = unserialize($posts); 
} 

$posts[$post_id] = null; 

setcookie('post-id', serialize($posts), time() + 3600); 

、ユーザーは次の操作を行って、ポストを訪問した場合、セッションやクッキーのいずれかから移入$ポスト変数を取得した後、あなたが確認できます。

<?php 

if (array_key_exists($post_id, $posts)) { 
    echo 'User has already visited post ID ' . $post_id; 
} 
+0

ヘルプフランクに感謝します。私はCookieメソッドを使用しています。同じ名前の "post-id"を持つ新しいCookieが格納され、それぞれに関連付けられた値があります。どのように私はWPループにそれを供給することができます配列にこれらの値をすべて入れますか? – Christian

+0

問題ありません! $ posts(どちらの例でも)には、各インデックスがポストIDである配列が含まれています。ループにIDを供給するコードの例を教えてください。ありがとう! – anFfWuy7qbJWaPp6DSOR

+0

確かに!私はちょうどループで私の答えを更新しました。 – Christian

関連する問題