WooCommerce创建了一个名为“woocommerce_recently_viewed”的cookie,其中包含了一个存储所有产品id的数组。默认情况下,这个cookie是一个会话cookie,但是我想将其操作30天。
我试过的是:
<?php
$viewed_products = $_COOKIE['woocommerce_recently_viewed'];
setcookie('woocommerce_recently_viewed', $viewed_products, strtotime( '+30 days' ), '/');
?>将其放置在html上方的header.php中,以更改cookie到期日期。这确实工作过一次,但每次都会以某种方式重置/破坏cookie。
他们有谁愿意用这个曲奇把我推向正确的方向吗?我试过在这里找一个类似的问题,但是找不到任何与此相关的东西。
TL;DR:
试图更改cookie 'woocommerce_recently_viewed‘cookie的到期日期。有人能把我推向正确的方向吗?
我们将非常感谢您的帮助。
谢谢/迪伦
发布于 2018-01-30 09:42:29
使用优先级较高的
template_redirect钩子,并使用wc_setcookie方法设置cookie。
就像这样:
function wh_overwriteViewedCookieWC()
{
$viewed_products = [];
if (empty($_COOKIE['woocommerce_recently_viewed']))
{
//cookie not set or empty
}
else
{
//cookie is set
// $viewed_products = (array) explode('|', $_COOKIE['woocommerce_recently_viewed']); //<-- get list of product ID
//your logic to manuplate
// Store for session only
wc_setcookie('woocommerce_recently_viewed', implode('|', $viewed_products), strtotime('+30 days')); //<-- see the 3rd param
}
}
add_action('template_redirect', 'wh_overwriteViewedCookieWC', 99); //<-- high priority代码在您的活动子主题(或主题)的https://codex.wordpress.org/Functions_File_Explained文件中。也可以在任何插件php文件中。
代码是经过测试和工作的.
希望这能有所帮助!
https://stackoverflow.com/questions/48517074
复制相似问题