【发布时间】:2018-06-30 12:52:08
【问题描述】:
在 WooCommerce 中,我在将产品添加到 cookie 中的购物车时设置了一个自定义字段:
add_action( 'init', 'wpcd_set_cookie', 1 );
function wpcd_set_cookie() {
if(isset( $_POST[ 'idp' ] ) ) :
$cookie_value = sanitize_text_field( $_POST[ 'idp' ] );
setcookie( 'idp', $cookie_value, time() + (86400 * 999), '/' ); // 86400 = 1 day
header("Refresh:0");
endif;
}
cookie 已正确设置,但我无法在此挂钩中获取其值:
add_action('woocommerce_order_status_completed', 'ustanovka_oplaty');
function ustanovka_oplaty( $order_id) {
$idp = isset( $_COOKIE['idp'] ) ? $_COOKIE['idp'] : 'not set';
// this $idp = 'not set ' why?
add_post_meta($order_id, 'wpcf-idvopros', $idp, true);
}
为什么?
我该如何解决这个问题?
编辑 - 我的表单将产品添加到购物车:
<form action="<?php the_permalink(); ?>" id="PaySumForm" method="post">
<input type="hidden" name="idp" id="idp" value="<?php echo $post->ID; ?>" class="required requiredField " />
<button type="contsubmit" class="payb qbutton">buy</button>
</form>
【问题讨论】:
-
@pan1ka 您何时和/或在何处发布自定义字段中的
'idp'值? -
@LoicTheAztec.. 幸运的是,您是这方面的专家,似乎可以帮助 pan1ka。我有这个问题需要审核,并根据其措辞发现了相似之处。
-
@LoicTheAztec 在用户将产品添加到购物车后,我设置了“idp”。正确的值被正常记录,如果您查看订单擦除上的 cookie,则“idp”设置正确。但是,在函数内部,值“idp”返回为“未设置”。
-
@LoicTheAztec 似乎 $ _COOKIE 在我的钩子中不起作用,但我不明白为什么。
-
@LoicTheAztec 你不明白我的意思,我将数据写入自定义订单字段没有问题。成功付款后,我无法将添加产品的页面 ID 的值转移到订单中。
标签: php wordpress woocommerce cart orders