gpt4 book ai didi

php - 将用户自定义帐户字段添加到 WooCommerce 结帐

转载 作者:行者123 更新时间:2023-12-04 09:36:53 25 4
gpt4 key购买 nike

我已经使用以下代码向管理员用户添加了自定义元字段:``

function wporg_usermeta_form_field_birthday( $user )
{
?>

<table class="form-table" id="table-form-dob" >
<tr>
<th><h3 style="margin: 0">Extra Meta Fields</h3></th>
</tr>
<tr>
<th>
<label for="user_dob">Birthday</label>
</th>
<td>
<input type="date"
class="regular-text ltr"
id="user_dob"
name="user_dob"
value="<?= esc_attr( get_user_meta( $user->ID, 'user_dob', true ) ) ?>"
title="Please use YYYY-MM-DD as the date format."
pattern="(19[0-9][0-9]|20[0-9][0-9])-(1[0-2]|0[1-9])-(3[01]|[21][0-9]|0[1-9])"
required>

</td>
</tr>
</table>
<script>
jQuery(function($){
jQuery('#table-form-dob tr').insertAfter(jQuery('#display_name').parentsUntil('tr').parent());
});
</script>
<?php
}

function wporg_usermeta_form_field_birthday_update( $user_id )
{
if ( ! current_user_can( 'edit_user', $user_id ) ) {
return false;
}
return update_user_meta(
$user_id,
'user_dob',
$_POST['user_dob']
);
}

add_action(
'show_user_profile',
'wporg_usermeta_form_field_birthday'
);

add_action(
'edit_user_profile',
'wporg_usermeta_form_field_birthday'
);

add_action(
'personal_options_update',
'wporg_usermeta_form_field_birthday_update'
);

add_action(
'edit_user_profile_update',
'wporg_usermeta_form_field_birthday_update'
);

register_meta('user', 'user_dob', array(
"type" => "string",
"show_in_rest" => true // this is the key part
));

我想在 woocommerce 结帐页面中添加这个相同的字段,所以当用户在 woocommerce 结帐页面中注册时,我们应该能够看到这个“生日”字段 (user_dob) 在管理员用户配置文件/编辑部分。

此外,我正在访问 rest API 中的用户元数据,目前它在 rest API 中显示元数据,在检查用户保护程序值后它应该在 wp rest API 中有值(value)。

如何添加?

最佳答案

您可以使用以下命令将 user_dob 自定义字段添加到结帐帐户注册字段:

add_filter( 'woocommerce_checkout_fields', 'add_checkout_account_birthday_field' );
function add_checkout_account_birthday_field( $fields ){
$fields['account']['user_dob'] = array(
'type' => 'date',
'label' => __("Birthday", "woocommerce"),
'placeholder' => __("Please use YYYY-MM-DD as the date format.", "woocommerce"),
'class' => array('form-row-wide regular-text ltr'),
'required' => true,
'custom_attributes' => ['pattern' => '(19[0-9][0-9]|20[0-9][0-9])-(1[0-2]|0[1-9])-(3[01]|[21][0-9]|0[1-9])'],
);
return $fields;
}

add_action( 'woocommerce_checkout_update_customer', 'save_checkout_account_birthday_field', 10, 2 );
function save_checkout_account_birthday_field( $customer, $data ){
if ( isset($_POST['user_dob']) && ! empty($_POST['user_dob']) ) {
$customer->update_meta_data( 'user_dob', sanitize_text_field($_POST['user_dob']) );
}
}

代码进入事件子主题(或事件主题)的 functions.php 文件。经过测试并有效。

enter image description here

下订单后,出生日期将保存到用户数据中并显示在管理员用户的“生日”字段中。

关于php - 将用户自定义帐户字段添加到 WooCommerce 结帐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62533498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com