Link im Warenkorb zurück zur Produkt

Die Problemstellung: Nach dem Ablegen eines Produktes in den Warenkorb wird dieses in der Warenkorb-Ansicht mit dem Ort verlinkt, von dem aus es in den Warenkorb gelegt wurde. D.h.: Wenn man das Produkt aus einer Übersichtsseite hinzufügt, wird diese Übersicht auch verlinkt und nicht die Produktseite selbst.

Hier ist ein Ansatz, das Inputfeld "MyReferer" zu verändern und mit diesem den jeweiligen Produktlink bzw. den Link zum Beitrag, welcher das Produkt enthält, per Formular und $_REQUEST['MyReferer'] an die Zielseite zu übermitteln. Dies kann man in drei Schritten erreichen:


1) Die Zuweisung
$strReturn_Gesamt .= '<input type="hidden" name="myReferer" value="'.htmlspecialchars($myReferer).'" />';
in der wp-content\plugins\wpshopgermany\controllers\WarenkorbController.class.php löschen.

2) Die Zuweisung der "referer"-Variable in den Klassen der verwendeten wpShopGermany-Module anpassen. Z.B. in der \wp-content\plugins\wpshopgermany\mods\mod_variantenplus.class.php die Zuweisung
$_SESSION['wpshopgermany']['basket'][intval($_REQUEST['produkt'])]['vari'][$var_key] = array( "v_id" => $_REQUEST['produkt']."/".$var_key, "menge" => intval($_REQUEST['menge']), "referer" => $_SERVER['HTTP_REFERER']);
ersetzen durch
$_SESSION['wpshopgermany']['basket'][intval($_REQUEST['produkt'])]['vari'][$var_key] = array( "v_id" => $_REQUEST['produkt']."/".$var_key, "menge" => intval($_REQUEST['menge']), "referer" => $_REQUEST['myReferer']);

3) An den betroffenen Stellen das Inputfeld "MyReferer" zum Formular hinzufügen. Z.B. bei der Verwendung des WP-Plugins "Posts for Page" in der wp-content\plugins\posts-for-page\posts-for-page.php mit Hilfe des str_replace-Befehls oder im verwendeten Template beispielsweise durch die Anweisungen
$content = get_the_content();
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]>', $content);
$content = str_replace('<div class="wpshopgermany">',"<input type='hidden' name='myReferer' value='".get_permalink()."' /><div class='wpshopgermany'>",$content);

... zurück zum Blog