我正在尝试让用户通过“我的帐户/编辑地址”显示的2个自定义字段中的值显示在相同的自定义字段中,但在结帐时,现在即使被旧(输入)值覆盖,即使该字段(通过浏览器检查器查看)具有新值。如何停止呢?
我对woocommerce,插件制作和wordpress都是陌生的。现在,我还没有做太多的事情来做任何事情(以不同的顺序放置代码,更改优先级,更改名称...如您所见,我真的不知道我在做什么)。>
这是我制作字段的方式:
add_filter( 'woocommerce_checkout_fields' , 'plugin_add_custom_billing_fields' );
function plugin_add_custom_billing_fields($fields) {
$fields['billing']['billing_org_number'] = array(
'label' => __('Organisationsnummer', 'woocommerce'),
'placeholder' => __('T.ex. 1234-5678', 'woocommerce'),
'required' => true,
'class' => array('form-row-wide'),
'clear' => true,
);
$fields['billing']['billing_org_reference'] = array(
'label' => __('Kostnadsställe/referens', 'woocommerce'),
'placeholder' => __('T.ex. Per Olofsson', 'woocommerce'),
'required' => true,
'class' => array('form-row-wide'),
'clear' => true,
);
return $fields;
}
这是我保存字段的方式:
function reigel_woocommerce_checkout_update_user_meta( $customer_id, $posted ) {
var_dump($customer_id, $posted);
if (isset($posted['billing_org_number'])) {
$dob = sanitize_text_field( $posted['billing_org_number'] );
update_user_meta( $customer_id, 'billing_org_number', $dob);
}
if (isset($posted['billing_org_reference'])) {
$dob = sanitize_text_field( $posted['billing_org_reference'] );
update_user_meta( $customer_id, 'billing_org_reference', $dob);
}
}
add_action( 'woocommerce_update_user_meta', 'reigel_woocommerce_checkout_update_user_meta', 10, 2 );
如您所见,我之前一直在搜索StackOverflow,并得到了Reigel的帮助!告诉我是否需要更多代码。
我想要的结果:在我的帐户/编辑地址中进行编辑后,我的值(来自数据库)将显示在Checkout中。
实际结果:旧值显示在Checkout中,新值显示在“我的帐户/编辑地址”中。
编辑:好像Klarna Checkout的插件搞乱了会话。
编辑2:是,是克拉纳。我将稍后再讨论此问题,因为该小组讨论并选择了删除该插件。