Ein Redirect-Cookie in WordPress setzen

Ich habe den ganzen Tag über im Netz nach einer Lösung für mein Problem gesucht, aber ich kann nichts verstehen, was ich sehe, da ich absolut nichts über Kodierung weiß.

Was ich gerne machen würde:

  1. Ich möchte einen Cookie setzen, wenn eine Person eine bestimmte Seite meiner Website besucht, nennen wir sie Seite 1.
  2. Wenn der Besucher dann auf eine andere, nicht verwandte Seite (Seite 2) geht, wird er automatisch auf Seite 3 umgeleitet (wegen des Cookies, der beim Besuch von Seite 1 gesetzt wurde). Besucher, die keinen Keks haben, können diese Seite nie sehen.

Was ich bisher geschafft habe:

Ich habe es geschafft, den Cookie in WordPress functions.php zu setzen, indem ich Folgendes einfüge:

function set_newuser_cookie() { if (!isset($_COOKIE['subscriber'])) { setcookie('subscriber', no, 0, COOKIEPATH, COOKIE_DOMAIN, false); } } add_action( 'init', 'set_newuser_cookie'); 

Ich habe es geschafft, eine Umleitung zu definieren, indem ich folgendes in functions.php eingefügt habe:

 if (!isset ($_COOKIE['subscriber'])) header ("Location: page2"); else header ("Location: page3"); 

Soweit ich weiß. Es funktioniert nicht, da keine der oben genannten Optionen seitenspezifisch sind. Ich möchte nur, dass der Cookie gesetzt (oder variabel geändert) wird, wenn der Besucher eine bestimmte Seite besucht und dann umgeleitet wird, wenn er eine andere bestimmte Seite besucht.

Ist das machbar?

Oh, und übrigens, ich bin auf einer selbst gehosteten WordPress-Seite.

Vielen Dank.

Sammie

Solutions Collecting From Web of "Ein Redirect-Cookie in WordPress setzen"

Der einzige Teil, der in Ihrem Code fehlt, ist zu prüfen, auf welcher Seite Sie gerade sind. Die is_page () – function ist eine gute Möglichkeit, diesen Kontext zu erhalten.

Du könntest es auf diese Weise versuchen (ich habe es nicht getestet, schreibe nur aus meinem Kopf, um das Konzept zu zeigen):

 function set_newuser_cookie() { if (!isset($_COOKIE['subscriber']) && is_page('my-page-slug-page1')) { setcookie('subscriber', no, 0, COOKIEPATH, COOKIE_DOMAIN, false); } } add_action( 'init', 'set_newuser_cookie'); function my_cookie_redirect() { if (isset($_COOKIE['subscriber']) && is_page('my-page-slug-page2')) { wp_redirect('/page3'); exit; } } add_action('template_redirect', 'my_cookie_redirect', 1); 

Die function wordpress is_page () übernimmt entweder die Seiten-ID, den Seiten-Slug oder den Seiten-Titel als Parameter. http://codex.wordpress.org/Function_Reference/is_page

Sie sollten auch immer nach einer Weiterleitung beenden, da der Benutzer andernfalls zuerst Seite 2 laden würde, bevor er auf Seite 3 umgeleitet wird

 function template_redir_wpse_97315() { global $post; if (!isset($post->ID)) return; if ($post->ID == 1) { if (!isset($_COOKIE['subscriber'])) { setcookie('subscriber', no, 0, COOKIEPATH, COOKIE_DOMAIN, false); } } if (is_single() && $post->ID == 2 && isset($_COOKIE['subscriber'])) { wp_safe_redirect(home_url('/page-3/')); exit; } if (is_single() && $post->ID == 2 && !isset ($_COOKIE['subscriber'])) { wp_safe_redirect(home_url()); exit; } } add_filter('template_redirect','template_redir_wpse_97315',1); 

Ich gebe zu, dass ich mir nicht ganz sicher bin, ob die Logik stimmt. Die Beschreibung der Weiterleitungen und der von Ihnen gepostete Code hat mich etwas verwirrt. Dies sollte jedoch die Grundidee sein.

Die Post ID sind offensichtlich falsch. Sie müssen diese aussortieren. get_permalink() sollte es tun. Möglicherweise benötigen Sie andere Bedingungen, damit diese Weiterleitungen sich verhalten.

Referenz

http://codex.wordpress.org/Plugin_API/Action_Reference/template_redirect
http://codex.wordpress.org/Function_Reference/wp_safe_redirect http://codex.wordpress.org/Function_Reference/home_url

Das war’s s_ha_dum! Du hast nicht ganz bekommen, was ich wollte, das ist meine Schuld, weil ich es nicht richtig erklären konnte. Ich wollte nicht, dass der Besucher zu irgendeinem Zeitpunkt auf die Homepage weitergeleitet wird.

Im Folgenden habe ich mich festgelegt: (bearbeitet am 27. April 2013)

Ich habe aber immer noch Probleme.

Das Problem ist, es funktioniert einwandfrei auf meinem Mac (Chrome, Safari und Firefox), aber nicht auf meinem PC. Auf dem PC setzt es die Cookies gut, aber die Weiterleitung erfolgt unabhängig davon, ob der Cookie gesetzt ist oder nicht.

Neue Bearbeitung: Jetzt funktioniert es! Danke allen. Der folgende Code funktioniert einwandfrei.

 function set_newuser_cookie() { global $post; if (!isset($post->ID)) return; if ($post->ID == 1 || $post->ID == 7 || $post->ID == 8 || $post->ID == 9) { if (!isset($_COOKIE['subscriber'])) { setcookie('subscriber', no, 0, COOKIEPATH, COOKIE_DOMAIN, false); } } if (isset($_COOKIE['subscriber']) && $post->ID == 2 || $post->ID == 10) { wp_safe_redirect('/page3/'); exit; } } add_filter('template_redirect','set_newuser_cookie',1);