【问题标题】:Adding an additional custom field in Woocommerce Edit Account page在 Woocommerce 编辑帐户页面中添加额外的自定义字段
【发布时间】:2017-12-02 03:42:52
【问题描述】:

在 WooCommerce 中,我已经能够在编辑帐户页面中添加自定义字段。 我尝试添加第二个自定义字段“Favorite Color 2”,但无法正常工作,我做错了。

如何在“编辑帐户”页面中添加/保存额外的自定义字段?

// Add the custom field "favorite_color"
add_action( 'woocommerce_edit_account_form', 'add_favorite_color_to_edit_account_form' );
function add_favorite_color_to_edit_account_form() {
    $user = wp_get_current_user();
    ?>
        <p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
        <label for="favorite_color"><?php _e( 'Favorite color', 'woocommerce' ); ?>
        <input type="text" class="woocommerce-Input woocommerce-Input--text input-text" name="favorite_color" id="favorite_color" value="<?php echo esc_attr( $user->favorite_color ); ?>" />
    </p>
    <?php
}

// Save the custom field 'favorite_color' 
add_action( 'woocommerce_save_account_details', 'save_favorite_color_account_details', 12, 1 );
function save_favorite_color_account_details( $user_id ) {
    // For Favorite color
    if( isset( $_POST['favorite_color'] ) )
        update_user_meta( $user_id, 'favorite_color', sanitize_text_field( $_POST['favorite_color'] ) );

    // For Billing email (added related to your comment)
    if( isset( $_POST['account_email'] ) )
        update_user_meta( $user_id, 'billing_email', sanitize_text_field( $_POST['account_email'] ) );

【问题讨论】:

    标签: php wordpress woocommerce custom-fields account


    【解决方案1】:

    这可以很容易地通过这种方式对您的代码进行一些更改:

    // Add the custom field "favorite_color"
    add_action( 'woocommerce_edit_account_form', 'add_favorite_color_to_edit_account_form' );
    function add_favorite_color_to_edit_account_form() {
        $user = wp_get_current_user();
    
        // First Field
        ?>
        <p class="woocommerce-form-row woocommerce-form-row--first form-row form-row-first">
            <label for="favorite_color"><?php _e( 'Favorite color', 'woocommerce' ); ?>
            <input type="text" class="woocommerce-Input woocommerce-Input--text input-text" name="favorite_color" id="favorite_color" value="<?php echo esc_attr( $user->favorite_color ); ?>" />
        </p>
        <?php
        // Second Field
        ?>
        <p class="woocommerce-form-row woocommerce-form-row--last form-row form-row-last">
            <label for="favorite_color"><?php _e( 'Favorite color 2', 'woocommerce' ); ?>
            <input type="text" class="woocommerce-Input woocommerce-Input--text input-text" name="favorite_color2" id="favorite_color2" value="<?php echo esc_attr( $user->favorite_color2 ); ?>" />
        </p>
        <div class="clear"></div>
        <?php
    }
    
    // Save the custom field 'favorite_color'
    add_action( 'woocommerce_save_account_details', 'save_favorite_color_account_details', 12, 1 );
    function save_favorite_color_account_details( $user_id ) {
        // For Favorite color
        if( isset( $_POST['favorite_color'] ) )
            update_user_meta( $user_id, 'favorite_color', sanitize_text_field( $_POST['favorite_color'] ) );
    
        // For Favorite color 2
        if( isset( $_POST['favorite_color2'] ) )
            update_user_meta( $user_id, 'favorite_color2', sanitize_text_field( $_POST['favorite_color2'] ) );
    
        // For Billing email (added related to your comment)
        if( isset( $_POST['account_email'] ) )
            update_user_meta( $user_id, 'billing_email', sanitize_text_field( $_POST['account_email'] ) );
    }
    

    代码进入您的活动子主题(或活动主题)的 function.php 文件或任何插件文件中。

    经过测试并且有效。

    你会得到这个:

    【讨论】:

    • 我找了好几天了...这很好用。
    • 上传文件是否可以添加到编辑帐户页面?
    猜你喜欢
    • 2018-05-15
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    • 2021-07-10
    • 2022-01-03
    相关资源
    最近更新 更多