为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕神8447489 2023-04-28 14:39:54
我已经添加了下面的代码。生日字段显示在我的帐户页面以及 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 注册字段的终极指南
查看完整描述

1 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

以下代码将添加(并保存)一个自定义生日字段到

  • 我的帐户 - 编辑帐户

  • 管理员用户页面 - 个人资料

// Add field - my account

function action_woocommerce_edit_account_form() {   

    woocommerce_form_field( 'birthday_field', array(

        'type'        => 'date',

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

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

        'required'    => true,

    ), get_user_meta( get_current_user_id(), 'birthday_field', true ));

}

add_action( 'woocommerce_edit_account_form', 'action_woocommerce_edit_account_form' );


// Validate - my account

function action_woocommerce_save_account_details_errors( $args ){

    if ( isset($_POST['birthday_field']) && empty($_POST['birthday_field']) ) {

        $args->add( 'error', __( 'Please provide a birth date', 'woocommerce' ) );

    }

}

add_action( 'woocommerce_save_account_details_errors','action_woocommerce_save_account_details_errors', 10, 1 );


// Save - my account

function action_woocommerce_save_account_details( $user_id ) {  

    if( isset($_POST['birthday_field']) && ! empty($_POST['birthday_field']) ) {

        update_user_meta( $user_id, 'birthday_field', sanitize_text_field($_POST['birthday_field']) );

    }

}

add_action( 'woocommerce_save_account_details', 'action_woocommerce_save_account_details', 10, 1 );


// Add field - admin

function add_user_birtday_field( $user ) {

    ?>

        <h3><?php _e('Birthday','woocommerce' ); ?></h3>

        <table class="form-table">

            <tr>

                <th><label for="birthday_field"><?php _e( 'Date of Birth', 'woocommerce' ); ?></label></th>

                <td><input type="date" name="birthday_field" value="<?php echo esc_attr( get_the_author_meta( 'birthday_field', $user->ID )); ?>" class="regular-text" /></td>

            </tr>

        </table>

        <br />

    <?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 - admin

function save_user_birtday_field( $user_id ) {

    if( ! empty($_POST['birthday_field']) ) {

        update_user_meta( $user_id, 'birthday_field', sanitize_text_field( $_POST['birthday_field'] ) );

    }

}

add_action( 'personal_options_update', 'save_user_birtday_field', 10, 1 );

add_action( 'edit_user_profile_update', 'save_user_birtday_field', 10, 1 );


查看完整回答
反对 回复 2023-04-28
  • 1 回答
  • 0 关注
  • 109 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信