我正在用前端的woocommerce登录设置一个网站。我想直接把客户从那里带到注册账单地址。然后,我想用用户注册注册的值填写账单的名字和姓氏。
这段代码可以工作,但我必须刷新帐单地址页面,以便在字段中显示名称。为什么?
add_action("user_register", "pb_update_user_meta", 10, 2);
function pb_update_user_meta($user_id, $redirect_to) {
global $filled;
$user_id = get_current_user_id();
$filled = get_user_meta( $user_id, \'billing_address_1\', true );
if($filled != \'\') {
$redirect_to = home_url() . \'/my-account/\';
} else {
$user_first_name = get_user_meta(\'first_name\');
$user_last_name = get_user_meta(\'last_name\');
// setting up billing name
update_user_meta( $user_id, \'billing_first_name\', $user_first_name );
update_user_meta( $user_id, \'billing_last_name\', $user_last_name );
$redirect_to = home_url() . \'/my-account/edit-address/billing/\';
}
return $redirect_to;
}
我也尝试过使用woocommerce\\u login\\u redirect filter,但结果相同。
SO网友:hal
抱歉,我无法检索$_GET 变量。解决方案是从数据库中检索值,并将它们插入模板文件(form edit address.php)中的适当位置。这很有效:-)
<?php
$user_id = get_current_user_id();
$user_info = get_userdata( $user_id );
$first_name = $user_info->first_name;
$last_name = $user_info->last_name;
?>
<?php do_action("woocommerce_before_edit_address_form_{$load_address}" ); ?>
<?php
foreach ( $address as $key => $field ) :
if ($key == \'billing_first_name\' && $field[\'value\'] == \'\')
woocommerce_form_field( $key, $field, $first_name );
elseif ($key == \'billing_last_name\' && $field[\'value\'] == \'\')
woocommerce_form_field( $key, $field, $last_name );
else
woocommerce_form_field( $key, $field, ! empty( $_POST[ $key ] ) ? wc_clean( $_POST[ $key ] ) : $field[\'value\'] );
endforeach;
...