如何禁止用户在WooCommerce结账时编辑帐单地址?

时间:2018-07-31 作者:Roope

有没有办法禁止用户在结账页面中编辑他们的账单地址?

我正在尝试实现一种状态,用户可以看到当前的账单地址,但在没有联系商店管理员的情况下无法更改它。用户只能更改订单的发货地址。这两个地址仍应附在订单上。

我当前的解决方案是使用woocommerce_billing_fields 钩住账单地址字段并将其打印为静态html,但账单地址根本不会出现在订单中。

1 个回复
最合适的回答,由SO网友:Roope 整理而成

好吧,在闲聊之后我找到了解决办法。通过在中取消设置字段,可以从签出中删除字段woocommerce_billing_fields 使用钩子,然后将这些值再次添加到order from users配置文件中woocommerce_checkout_posted_data

add_filter( \'woocommerce_checkout_posted_data\', \'fill_order_billing_details\' );

function fill_order_billing_details( $data ) {
  $customer_id = get_current_user_id();

  $data[\'billing_first_name\'] = get_user_meta( $customer_id, \'billing_first_name\', true );
  $data[\'billing_last_name\']  = get_user_meta( $customer_id, \'billing_last_name\', true );
  $data[\'billing_company\']    = get_user_meta( $customer_id, \'billing_company\', true );
  $data[\'billing_country\']    = get_user_meta( $customer_id, \'billing_country\', true );
  $data[\'billing_address_1\']  = get_user_meta( $customer_id, \'billing_address_1\', true );
  $data[\'billing_address_2\']  = get_user_meta( $customer_id, \'billing_address_2\', true );
  $data[\'billing_city\']       = get_user_meta( $customer_id, \'billing_city\', true );
  $data[\'billing_state\']      = get_user_meta( $customer_id, \'billing_state\', true );
  $data[\'billing_postcode\']   = get_user_meta( $customer_id, \'billing_postcode\', true );
  $data[\'billing_phone\']      = get_user_meta( $customer_id, \'billing_phone\', true );
  $data[\'billing_email\']      = get_user_meta( $customer_id, \'billing_email\', true );

  return $data;
}

结束

相关推荐