自定义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
相关产品推荐
相关产品推荐

