将用户元从登录重定向更新为计费地址

时间:2017-02-07 作者:hal

我正在用前端的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,但结果相同。

1 个回复
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;

...

相关推荐

Change default login auth

我将增强我的WordPress身份验证页面。我的想法很简单,就是更改过程以检查密码,就像使用用户名或电子邮件登录的默认过程一样。我已经更改了数据库,添加了额外的字段“code”:我的目标是:the user can login with your username or email and with your password or code.然而,我不知道哪个部分的编码是用来验证密码的,因为我想参考现有的编码。