如何使用 Transient API WordPress 正确设置时间
How To Set Time Properly With Transient API WordPress
我已经搜索过了,但找不到答案。
我们正在使用的网站中有一段代码,当用户登录 WordPress 时会设置一个 cookie。目前正在添加 cookie,但未正确设置 cookie 过期日期(从今天起 30 天)。一旦登录发生,cookie 就会出现,但日期未按预期在 cookie 中定义 30 天。
add_action( 'wp_login', 'bro_set_universal_cookie' );
function bro_set_universal_cookie() {
global $i2sdk;
$email = wp_get_current_user()->user_email;
// get infusionsoft ID
$returnFields = array('Id');
$client_data = $i2sdk->isdk->findByEmail($email, $returnFields);
$Infusionsoft_ID = $client_data[0]['Id'];
setcookie( 'CookieName', $Infusionsoft_ID, 30 * DAYS_IN_SECONDS, '/',
'.websitenamehere.com');
}
add_action('wp_head','rup_check_referrer');
function rup_check_referrer() {
if(get_post_type() == "sfwd-courses"){
if(isset($_GET['registersuccess']) && $_GET['registersuccess']==1)
{
$cur_url=strtok($_SERVER["REQUEST_URI"],'?');
header("Refresh:0; url=$cur_url");
}
}
}
查看此内容后,似乎包含 Transients API 日期的部分,该部分:
30 * DAYS_IN_SECONDS
假设是:
30 * DAY_IN_SECONDS
如此处所述:
https://codex.wordpress.org/Transients_API
但是,当更改它并从 DAYS 中删除 S 时,cookie 根本不再应用。很奇怪。
如果有人可以帮助让cookie 过期日期在30 天后过期,将不胜感激。正确代码的任何示例都将非常有帮助。我假设它与需要更改的这部分编码有关:
30 * DAYS_IN_SECONDS
只是不确定这样做的最佳方式。是否认为不使用瞬态 API 作为日期,而只是将日期写入带有 php 的 cookie 可能是更好的选择?像这样:
add_action( 'wp_login', 'bro_set_universal_cookie' );
function bro_set_universal_cookie() {
global $i2sdk;
$email = wp_get_current_user()->user_email;
// get infusionsoft ID
$returnFields = array('Id');
$client_data = $i2sdk->isdk->findByEmail($email, $returnFields);
$Infusionsoft_ID = $client_data[0]['Id'];
setcookie( 'CookieName', $Infusionsoft_ID, echo date('Y-m-d', strtotime("+30
days")), '/', '.websitenamehere.com');
}
add_action('wp_head','rup_check_referrer');
function rup_check_referrer() {
if(get_post_type() == "sfwd-courses"){
if(isset($_GET['registersuccess']) && $_GET['registersuccess']==1)
{
$cur_url=strtok($_SERVER["REQUEST_URI"],'?');
header("Refresh:0; url=$cur_url");
}
}
}
提前感谢您提供的任何帮助!
好的,修复了这个...我使用的修复编辑是我更改了这个:
setcookie( 'CookieName', $Infusionsoft_ID, 30 * DAYS_IN_SECONDS, '/', '.websitenamehere.com');
我在做了一些研究后写的这行新代码。我意识到无论谁做了原始代码,都不应该使用瞬态 API 日期替换,只是好的 'ol PHP 日期就是答案:
setcookie( 'CookieName', $Infusionsoft_ID, time() + (86400 * 30), '/', '.websitenamehere.com');
希望这对以后可能需要它的人有所帮助!
我已经搜索过了,但找不到答案。
我们正在使用的网站中有一段代码,当用户登录 WordPress 时会设置一个 cookie。目前正在添加 cookie,但未正确设置 cookie 过期日期(从今天起 30 天)。一旦登录发生,cookie 就会出现,但日期未按预期在 cookie 中定义 30 天。
add_action( 'wp_login', 'bro_set_universal_cookie' );
function bro_set_universal_cookie() {
global $i2sdk;
$email = wp_get_current_user()->user_email;
// get infusionsoft ID
$returnFields = array('Id');
$client_data = $i2sdk->isdk->findByEmail($email, $returnFields);
$Infusionsoft_ID = $client_data[0]['Id'];
setcookie( 'CookieName', $Infusionsoft_ID, 30 * DAYS_IN_SECONDS, '/',
'.websitenamehere.com');
}
add_action('wp_head','rup_check_referrer');
function rup_check_referrer() {
if(get_post_type() == "sfwd-courses"){
if(isset($_GET['registersuccess']) && $_GET['registersuccess']==1)
{
$cur_url=strtok($_SERVER["REQUEST_URI"],'?');
header("Refresh:0; url=$cur_url");
}
}
}
查看此内容后,似乎包含 Transients API 日期的部分,该部分:
30 * DAYS_IN_SECONDS
假设是:
30 * DAY_IN_SECONDS
如此处所述:
https://codex.wordpress.org/Transients_API
但是,当更改它并从 DAYS 中删除 S 时,cookie 根本不再应用。很奇怪。
如果有人可以帮助让cookie 过期日期在30 天后过期,将不胜感激。正确代码的任何示例都将非常有帮助。我假设它与需要更改的这部分编码有关:
30 * DAYS_IN_SECONDS
只是不确定这样做的最佳方式。是否认为不使用瞬态 API 作为日期,而只是将日期写入带有 php 的 cookie 可能是更好的选择?像这样:
add_action( 'wp_login', 'bro_set_universal_cookie' );
function bro_set_universal_cookie() {
global $i2sdk;
$email = wp_get_current_user()->user_email;
// get infusionsoft ID
$returnFields = array('Id');
$client_data = $i2sdk->isdk->findByEmail($email, $returnFields);
$Infusionsoft_ID = $client_data[0]['Id'];
setcookie( 'CookieName', $Infusionsoft_ID, echo date('Y-m-d', strtotime("+30
days")), '/', '.websitenamehere.com');
}
add_action('wp_head','rup_check_referrer');
function rup_check_referrer() {
if(get_post_type() == "sfwd-courses"){
if(isset($_GET['registersuccess']) && $_GET['registersuccess']==1)
{
$cur_url=strtok($_SERVER["REQUEST_URI"],'?');
header("Refresh:0; url=$cur_url");
}
}
}
提前感谢您提供的任何帮助!
好的,修复了这个...我使用的修复编辑是我更改了这个:
setcookie( 'CookieName', $Infusionsoft_ID, 30 * DAYS_IN_SECONDS, '/', '.websitenamehere.com');
我在做了一些研究后写的这行新代码。我意识到无论谁做了原始代码,都不应该使用瞬态 API 日期替换,只是好的 'ol PHP 日期就是答案:
setcookie( 'CookieName', $Infusionsoft_ID, time() + (86400 * 30), '/', '.websitenamehere.com');
希望这对以后可能需要它的人有所帮助!