【问题标题】:Wordpress-Update Birth Date in Woocommerce AccountWoocommerce 帐户中的 Wordpress 更新出生日期
【发布时间】:2017-02-09 12:26:24
【问题描述】:

我尝试在我的网站上的 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>

在 wp_usermeta 表中创建列 billing_birthdate,但我也将此代码添加到 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

所以我的问题是,在将该字段编辑到我的帐户页面后,我的错误在哪里,更改不会反映在帐户仪表板中。

【问题讨论】:

    标签: wordpress woocommerce field


    【解决方案1】:

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

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

    希望这对你有用。

    【讨论】:

    • 感谢您的回复。我想问一下,您建议的这一行究竟应该在哪里替换?
    • 你需要替换 update_user_meta( $user_id, 'birthdate', htmlentities( $_POST[ 'birthdate' ] ) );此行与给定行: update_user_meta( $customer_id, 'billing_birthdate',htmlentities( $_POST['birthdate'] ) );
    • 我尝试在此代码中将您的行替换为我的行:function my_woocommerce_save_account_details( $user_id ) { update_user_meta( $customer_id, 'billing_birthdate',htmlentities( $_POST['birthdate'] ) ); } // end func 但是当尝试修改生日时,什么都没有改变..
    • 请将“生日”更改为“帐单生日”。如果没有找到,您需要再次检查您的代码。
    • 也请移除 htmlentities 并使用 sanitize_text_field
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 2017-04-15
    相关资源
    最近更新 更多