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

自定义WooCommerce我的账户订单板块:新增字段需求求助

自定义WooCommerce我的账户订单列表字段实现方案

1. 核心文件修改警告

直接修改wc-accounts-function.php或my-orders.php等WooCommerce核心文件,会在插件更新时丢失所有自定义内容,必须通过子主题的functions.php文件或自定义代码插件实现需求。

2. 自定义订单列表列结构

通过woocommerce_account_orders_columns过滤器,替换原有日期列并新增姓名、邮箱列:

add_filter( 'woocommerce_account_orders_columns', 'custom_account_orders_columns' );
function custom_account_orders_columns( $columns ) {
    // 重新定义列顺序与字段
    $new_columns = array(
        'order-number'  => __( 'Order', 'woocommerce' ),
        'order-datetime'=> __( 'Date & Time', 'woocommerce' ), // 替换原日期列,改为日期+时间
        'order-name'    => __( 'Name', 'woocommerce' ),
        'order-email'   => __( 'Email', 'woocommerce' ),
        'order-status'  => __( 'Status', 'woocommerce' ),
        'order-total'   => __( 'Total', 'woocommerce' ),
        'order-actions' => __( 'Actions', 'woocommerce' ),
    );
    return $new_columns;
}

3. 自定义各列显示内容

使用woocommerce_my_account_my_orders_column_{$column_id}动作,为每个自定义列输出对应数据:

// 输出日期+时间列内容
add_action( 'woocommerce_my_account_my_orders_column_order-datetime', 'custom_order_datetime_column_content' );
function custom_order_datetime_column_content( $order ) {
    // 自定义日期时间格式,可根据需求调整(参考PHP date()函数规则)
    echo '<time datetime="' . esc_attr( $order->get_date_created()->date( 'c' ) ) . '">' . esc_html( wc_format_datetime( $order->get_date_created(), 'F j, Y, g:i a' ) ) . '</time>';
}

// 输出姓名列内容
add_action( 'woocommerce_my_account_my_orders_column_order-name', 'custom_order_name_column_content' );
function custom_order_name_column_content( $order ) {
    // 调用账单地址姓名,如需配送地址可替换为get_shipping_first_name/last_name
    echo esc_html( $order->get_billing_first_name() . ' ' . $order->get_billing_last_name() );
}

// 输出邮箱列内容
add_action( 'woocommerce_my_account_my_orders_column_order-email', 'custom_order_email_column_content' );
function custom_order_email_column_content( $order ) {
    echo esc_html( $order->get_billing_email() );
}

// 调整总金额列显示(简化为仅展示金额)
add_action( 'woocommerce_my_account_my_orders_column_order-total', 'custom_order_total_column_content' );
function custom_order_total_column_content( $order ) {
    echo esc_html( $order->get_formatted_order_total() );
}

4. 适配DIVI主题的样式调整

如果列宽布局不协调,可在DIVI主题的「外观 > 自定义 > 附加CSS」中添加以下样式:

.woocommerce-MyAccount-orders .woocommerce-orders-table__column-order-datetime,
.woocommerce-MyAccount-orders .woocommerce-orders-table__column-order-name,
.woocommerce-MyAccount-orders .woocommerce-orders-table__column-order-email {
    width: 15%;
}
.woocommerce-MyAccount-orders .woocommerce-orders-table__column-order-number {
    width: 10%;
}

内容的提问来源于stack exchange,提问作者siam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:35:29