这里有点困惑。我已经尝试了几天,以获取我从WooCommerce注册表单中的自定义字段收集的数据,并将其插入数据库中的用户meta中。表单的代码是:
//Addition of morello Account Number to reg page
add_action( 'woocommerce_register_form', 'add_register_form_field' );
function add_register_form_field(){
woocommerce_form_field(
'morello_account_number',
array(
'type' => 'text',
'required' => true, // required field?
'label' => 'morello Account Number:'
),
( isset($_POST['morello_account_number']) ? $_POST['morello_account_number'] : '' )
);
}
add_action( 'woocommerce_created_customer', 'save_register_fields' );
function save_register_fields( $customer_id ){
if ( isset( $_POST['morello_account_number'] ) ) {
update_user_meta( $customer_id, 'morello_account_number', wc_clean( $_POST['morello_account_number'] ) );
}
}
现在,我想从表中获取数据并将其显示在WooCommerce的“订单”页面上的单独列中,这样便可以查看莫雷洛编号,而无需手动搜索客户详细信息。
到目前为止,这是我的代码:
/**
* Add columns
*/
function morello_account_number_column( $columns ) {
$columns['morello_account_number'] = "morello Account Number";
return $columns;
}
add_filter('manage_edit-shop_order_columns', 'morello_account_number_column', 10, 1 );
/**
* Populate columns
*/
function morello_placeholder( $column, $post_id ) {
if( $column == 'morello_account_number' ) {
// https://developer.wordpress.org/reference/functions/get_post_meta/
$a_a_n = get_user_meta( $user_id, 'morello_account_number', true );
// Value is found
if ( !empty($a_a_n) ) {
echo $a_a_n;
} else {
echo 'something else';
}
}
}
add_filter( 'manage_shop_order_posts_custom_column', 'morello_placeholder', 10, 2 );
这可以按预期工作,但始终显示“其他”引号-代码在正确的位置创建了该列,但不会在morello_account_number中填充该列。
我想念什么吗?
答案 0 :(得分:1)
您的代码中有一些小错误。
注意:请注意,如果将新字段添加到注册表单中,最好将此字段返回多个位置,以便用户随后进行调整。
请参阅:https://businessbloomer.com/woocommerce-add-select-field-account-register-form/
第3部分:显示字段 @用户个人资料(管理员)和我的帐户编辑页面(前端)
所以你得到
/**
* Add morello account number to reg page
*/
function add_register_form_field() {
?>
<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
<label for="reg_morello_account_number"><?php _e( 'Morello Account Number', 'woocommerce' ); ?> <span class="required">*</span></label>
<input type="text" class="woocommerce-Input woocommerce-Input--text input-text" name="morello_account_number" id="reg_morello_account_number" value="<?php if ( ! empty( $_POST['morello_account_number'] ) ) echo esc_attr( $_POST['morello_account_number'] ); ?>" />
</p>
<?php
}
add_action( 'woocommerce_register_form', 'add_register_form_field' );
/**
* Save morello account number
*/
function save_register_fields( $customer_id, $new_customer_data, $password_generated ) {
if ( isset( $_POST['morello_account_number'] ) ) {
update_user_meta( $customer_id, 'morello_account_number', wc_clean( $_POST['morello_account_number'] ) );
}
}
add_action( 'woocommerce_created_customer', 'save_register_fields', 10 , 3 );
/**
* Add columns
*/
function morello_account_number_column( $columns ) {
$columns['morello_account_number'] = "morello Account Number";
return $columns;
}
add_filter('manage_edit-shop_order_columns', 'morello_account_number_column', 10, 1 );
/**
* Populate columns
*/
function morello_placeholder( $column, $post_id ) {
// Get order
$order = wc_get_order( $post_id );
// Get user id
$user_id = $order->get_user_id();
if( $column == 'morello_account_number' ) {
$a_a_n = get_user_meta( $user_id, 'morello_account_number', true );
// Value is found
if ( !empty($a_a_n) ) {
echo $a_a_n;
} else {
echo 'something else';
}
}
}
add_filter( 'manage_shop_order_posts_custom_column', 'morello_placeholder', 10, 2 );