将生日字段添加到 WooCommerce 我的帐户和管理员用户页面

我已经添加了下面的代码。生日字段显示在我的帐户页面以及 WP 管理员用户页面中,但问题是日期未保存。


到目前为止我所拥有的


function iconic_get_account_fields() {

return apply_filters( 'iconic_account_fields', array(

    'user_url' => array(

        'type'        => 'date',

        'label'       => __( 'My Birth Date', 'iconic' ),

        'placeholder' => __( 'Date of Birth', 'iconic' ),

        'required'    => true,

    ),

) );

}

/**

* Add fields to registration form and account area.


*/

function iconic_print_user_frontend_fields() {

$fields = iconic_get_account_fields();


foreach ( $fields as $key => $field_args ) {

    woocommerce_form_field( $key, $field_args );

}

}

add_action( 'woocommerce_edit_account_form', 'iconic_print_user_frontend_fields', 10 ); // my account


 /**

 * Add fields to admin area.

 */

function iconic_print_user_admin_fields() {

$fields = iconic_get_account_fields();

?>

<h2><?php _e( 'Additional Information', 'iconic' ); ?></h2>

<table class="form-table" id="iconic-additional-information">

    <tbody>

    <?php foreach ( $fields as $key => $field_args ) { ?>

        <tr>

            <th>

                <label for="<?php echo $key; ?>"><?php echo $field_args['label']; ?></label>

            </th>

            <td>

                <?php $field_args['label'] = false; ?>

                <?php woocommerce_form_field( $key, $field_args ); ?>

            </td>

        </tr>

    <?php } ?>

    </tbody>

 </table>

 <?php

 }



 add_action( 'show_user_profile', 'iconic_print_user_admin_fields', 30 ); // admin: edit profile

 add_action( 'edit_user_profile', 'iconic_print_user_admin_fields', 30 ); // admin: edit other users

我部分使用的代码来自:

添加自定义 WooCommerce 注册字段的终极指南


慕神8447489
浏览 79回答 1
1回答

皈依舞

以下代码将添加(并保存)一个自定义生日字段到我的帐户 - 编辑帐户管理员用户页面 - 个人资料// Add field - my accountfunction action_woocommerce_edit_account_form() {&nbsp; &nbsp;&nbsp; &nbsp; woocommerce_form_field( 'birthday_field', array(&nbsp; &nbsp; &nbsp; &nbsp; 'type'&nbsp; &nbsp; &nbsp; &nbsp; => 'date',&nbsp; &nbsp; &nbsp; &nbsp; 'label'&nbsp; &nbsp; &nbsp; &nbsp;=> __( 'My Birth Date', 'woocommerce' ),&nbsp; &nbsp; &nbsp; &nbsp; 'placeholder' => __( 'Date of Birth', 'woocommerce' ),&nbsp; &nbsp; &nbsp; &nbsp; 'required'&nbsp; &nbsp; => true,&nbsp; &nbsp; ), get_user_meta( get_current_user_id(), 'birthday_field', true ));}add_action( 'woocommerce_edit_account_form', 'action_woocommerce_edit_account_form' );// Validate - my accountfunction action_woocommerce_save_account_details_errors( $args ){&nbsp; &nbsp; if ( isset($_POST['birthday_field']) && empty($_POST['birthday_field']) ) {&nbsp; &nbsp; &nbsp; &nbsp; $args->add( 'error', __( 'Please provide a birth date', 'woocommerce' ) );&nbsp; &nbsp; }}add_action( 'woocommerce_save_account_details_errors','action_woocommerce_save_account_details_errors', 10, 1 );// Save - my accountfunction action_woocommerce_save_account_details( $user_id ) {&nbsp;&nbsp;&nbsp; &nbsp; if( isset($_POST['birthday_field']) && ! empty($_POST['birthday_field']) ) {&nbsp; &nbsp; &nbsp; &nbsp; update_user_meta( $user_id, 'birthday_field', sanitize_text_field($_POST['birthday_field']) );&nbsp; &nbsp; }}add_action( 'woocommerce_save_account_details', 'action_woocommerce_save_account_details', 10, 1 );// Add field - adminfunction add_user_birtday_field( $user ) {&nbsp; &nbsp; ?>&nbsp; &nbsp; &nbsp; &nbsp; <h3><?php _e('Birthday','woocommerce' ); ?></h3>&nbsp; &nbsp; &nbsp; &nbsp; <table class="form-table">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <tr>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <th><label for="birthday_field"><?php _e( 'Date of Birth', 'woocommerce' ); ?></label></th>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <td><input type="date" name="birthday_field" value="<?php echo esc_attr( get_the_author_meta( 'birthday_field', $user->ID )); ?>" class="regular-text" /></td>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </tr>&nbsp; &nbsp; &nbsp; &nbsp; </table>&nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; &nbsp; <?php}add_action( 'show_user_profile', 'add_user_birtday_field', 10, 1 );add_action( 'edit_user_profile', 'add_user_birtday_field', 10, 1 );// Save field - adminfunction save_user_birtday_field( $user_id ) {&nbsp; &nbsp; if( ! empty($_POST['birthday_field']) ) {&nbsp; &nbsp; &nbsp; &nbsp; update_user_meta( $user_id, 'birthday_field', sanitize_text_field( $_POST['birthday_field'] ) );&nbsp; &nbsp; }}add_action( 'personal_options_update', 'save_user_birtday_field', 10, 1 );add_action( 'edit_user_profile_update', 'save_user_birtday_field', 10, 1 );
打开App,查看更多内容
随时随地看视频慕课网APP