2016-07-19 7 views
0

Lange Rede kurzer Sinn, ich versuche Einträge, die bereits angeklickt wurden, von einer WordPress-Schleife auszuschließen.Speichern von zusätzlichen Werten in einem Cookie PHP

So Cookies Ich gründe basierend auf Post-IDs, wenn ein Benutzer einen Beitrag wie folgt besucht:

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

Aber wie kann ich dann dieses Cookie abrufen und sie auf einen anderen Dienstposten ID hinzufügen, so dass ich kann Haben Sie ein Array von Post-IDs im Cookie gespeichert, um sie aus der WordPress-Schleife auszuschließen?

Ich habe versucht, die Daten deserialisieren und dann hinzufügen und setzen Sie den Cookie wieder, aber ich denke, ich bekomme nicht die Syntax richtig.

Jede Hilfe wäre sehr verpflichtet.

UPDATE

Hier ist meine Schleife Referenz:

$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 

); 

Hinweis: Sie können sehen einige Variablen in der Schleife von ACF sind, diese sind beabsichtigt und arbeiten. Der wichtige Teil ist die Variable "post__not_in" => array($cookie_post_ids), in der ich versuche, die Post-IDs der in den Cookies gespeicherten Posts zu füttern.

+1

so zeigen, was Sie versucht haben. Wir schreiben keinen Code für Sie, wir versuchen (vielleicht), was Sie geschrieben haben. –

+0

Sie tun direkt serialisieren von Wert. Sie müssen zuerst ein leeres Array erstellen, nachdem Sie einen neuen Wert eingegeben und den Wert serialisiert haben. –

+0

Ah, das macht Sinn @Shashikant. Ich werde das mehr erforschen. – Christian

Antwort

0

Ich empfehle die Lektüre über PHP sessions und Speicherung dieser Daten innerhalb eines:

<?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; 

Wenn Sie es in einem Cookie gespeichert werden soll, werden Sie eine Reihe von Post-IDs serialisiert werden müssen:

<?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); 

Für beide Beispiele, nachdem die $ posts immer variabel entweder von der Sitzung oder den Cookie bevölkerten, können Sie überprüfen, ob der Benutzer den Beitrag, indem Sie folgende besucht hat:

<?php 

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

Danke für die Hilfe Frank. Ich benutze die Cookie-Methode, und ich sehe, dass es ein neues Cookie für jede mit dem gleichen Namen "Post-ID" speichert und einen Wert zugeordnet hat. Wie lege ich alle diese Werte in ein Array, damit ich es in die WP-Schleife einspeisen kann? – Christian

+0

Kein Problem! $ posts (in beiden Beispielen) enthält ein Array, wobei jeder Index eine Post-ID ist. Können Sie ein Beispiel für den Code angeben, mit dem Sie die IDs in eine Schleife eingeben? Vielen Dank! – anFfWuy7qbJWaPp6DSOR

+0

Sicher Sache! Ich habe gerade meine Antwort mit der Schleife aktualisiert. – Christian