You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WooCommerce编辑账户页面保存user_description字段

解决WooCommerce编辑账户页面无法保存user_description的问题

你无法保存user_description的核心原因是:user_description对应的是WordPress用户表(wp_users)中的description字段,而非用户元数据(存储在wp_usermeta),所以不能用update_user_meta()来更新,必须使用wp_update_user()函数处理。

修改后的保存函数代码

在你的misha_save_account_details函数中添加处理用户简介的逻辑即可:

// ================= SAVE ACCOUNT FIELDS / START ==================== //

add_action( 'woocommerce_save_account_details', 'misha_save_account_details' );
function misha_save_account_details( $user_id ) {
    
    if( isset( $_POST[ 'billing_phone' ] ) ){
        update_user_meta( $user_id, 'billing_phone', wc_clean( $_POST[ 'billing_phone' ] ) );
    }
    
    // 新增:保存用户简介
    if ( isset( $_POST['user_description'] ) ) {
        $user_data = array(
            'ID'          => $user_id,
            'description' => wc_clean( $_POST['user_description'] )
        );
        wp_update_user( $user_data );
    }
    
    if ( isset( $_FILES['image'] ) ) {
        require_once( ABSPATH . 'wp-admin/includes/image.php' );
        require_once( ABSPATH . 'wp-admin/includes/file.php' );
        require_once( ABSPATH . 'wp-admin/includes/media.php' );

        $attachment_id = media_handle_upload( 'image', 0 );

        if ( is_wp_error( $attachment_id ) ) {
            // 修正:错误提示中显示文件名而非数组
            update_user_meta( $user_id, 'image', $_FILES['image']['name'] . ": " . $attachment_id->get_error_message()[0] );
        } else {
            update_user_meta( $user_id, 'image', $attachment_id );
        }
   }
    
}

// ================= SAVE ACCOUNT FIELDS / END ==================== //

补充说明

  1. 关于字段默认不显示的原因:WooCommerce的/my-account/edit-account/页面默认只聚焦于核心账户信息(用户名、邮箱、密码)的编辑,用户简介属于WordPress原生用户字段,不在WooCommerce默认的编辑表单范围内,所以需要你手动通过woocommerce_edit_account_form钩子添加。

  2. 可选优化:你可以用WooCommerce统一的woocommerce_form_field函数生成简介字段,保持表单风格一致,示例代码如下:

// 替换你原来的textarea代码
woocommerce_form_field(
    'user_description',
    array(
        'type'        => 'textarea',
        'rows'        => 8,
        'label'       => esc_html__( 'Bio', 'woocommerce' ),
        'class'       => array('form-row-wide')
    ),
    get_the_author_meta( 'user_description', $user_id )
);

内容的提问来源于stack exchange,提问作者Muhammad Usama Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 18:35:40