Wordpress-更新Woocommerce帐户中的出生日期

时间:2017-02-09 12:26:25

标签: wordpress woocommerce field

我尝试在我的网站上的WooCommerce注册页面中实现自定义字段,效果很好,但如果要将该日期修改为My Account page,则不会保存更改。看起来我错过了一些不会将数据传输到数据库的地方。这是自定义字段的代码:

<p class="form-row form-row-last">
<label for="reg_billing_birthdate"><?php _e( 'Date of Birth', 'woocommerce' ); ?> <span class="required">*</span></label>
<input type="text" class="input-text" name="billing_birthdate" id="reg_billing_birthdate" value="<?php if ( ! empty( $_POST['billing_birthdate'] ) ) esc_attr_e( $_POST['billing_birthdate'] ); ?>" />
</p>

列billing_birthdate被创建到wp_usermeta表中,但我将这段代码也添加到functions.php中进入主题:

和此代码将数据传递到数据库..

    /**
 * Below code save extra fields.
 */
   function wooc_save_extra_register_fields( $customer_id ) {
      if ( isset( $_POST['billing_birthdate'] ) ) {
         // Billing Address field which is by default
         update_user_meta( $customer_id, 'last_name', sanitize_text_field(     $_POST['billing_birthdate'] ) );
         // Last name field which is used in WooCommerce
         update_user_meta( $customer_id, 'billing_birthdate',     sanitize_text_field( $_POST['billing_birthdate'] ) );
  }

}

我还将此代码添加到functions.php文件中,以便能够将该字段编辑到编辑帐户页面。

   /**
  * To display additional field at My Account page 
  * Once member login: edit account
  */
 add_action( 'woocommerce_edit_account_form',    'my_woocommerce_edit_account_form' );

 function my_woocommerce_edit_account_form() {

$user_id = get_current_user_id();
$user = get_userdata( $user_id );

if ( !$user )
    return;

  $birthdate = get_user_meta( $user_id, 'birthdate', true );

 ?>
  <fieldset>

    <p class="form-row form-row-thirds">
        <label for="birthdate">Birth date:</label>
        <input type="text" name="birthdate" value="<?php echo esc_attr(    $birthdate ); ?>" class="input-text" />
        <br />
        <span style="font-size: 12px;">(Birth date format: DD-MM-YYYY. eg:     31-12-2005)</span>
    </p>
    </fieldset>

    <?php

   } // end func


   /**
   * This is to save user input into database
   * hook: woocommerce_save_account_details
   */
  add_action( 'woocommerce_save_account_details',     'my_woocommerce_save_account_details' );

  function my_woocommerce_save_account_details( $user_id ) {
    update_user_meta( $user_id, 'birthdate', htmlentities( $_POST[   'birthdate' ] ) ); 
  } // end func

所以我的问题是我的错误在将该字段编辑到我的帐户页面之后,更改未反映到帐户信息中心。

1 个答案:

答案 0 :(得分:2)

我发现,您在插入数据时正在更新名为“ billing_birthdate ”的字段。但是在编辑时,您正在更新字段“生日日期”。 更新:

update_user_meta( $customer_id, 'billing_birthdate',htmlentities( $_POST['birthdate'] ) );

希望这对你有用。