WooCommerce用户中心我的订单页面增删列开发需求
没问题,我来帮你实现WooCommerce用户账户「我的订单」页面的这些定制需求,下面是具体的代码实现步骤:
WooCommerce「我的订单」页面列定制方案
1. 移除指定列并添加附件列
首先通过woocommerce_account_orders_columns钩子修改订单列表的列结构,移除订单号和订单总额,同时插入自定义的附件列:
add_filter( 'woocommerce_account_orders_columns', 'custom_woocommerce_account_orders_columns' ); function custom_woocommerce_account_orders_columns( $columns ) { // 移除订单号与订单总额列 unset( $columns['order-number'] ); unset( $columns['order-total'] ); // 重新组织列顺序,将附件列插入到订单状态列之后 $new_columns = array(); foreach ( $columns as $key => $name ) { $new_columns[ $key ] = $name; if ( 'order-status' === $key ) { $new_columns['order-attachments'] = __( '订单附件', 'woocommerce' ); } } return $new_columns; }
2. 渲染订单附件列内容
接下来用对应列的钩子输出每个订单的附件内容,结合你提供的WooCommerce Attach Me!插件代码实现:
add_action( 'woocommerce_my_account_my_orders_column_order-attachments', 'custom_woocommerce_account_orders_attachments_column' ); function custom_woocommerce_account_orders_attachments_column( $order ) { $order_id = $order->get_id(); // 先检查插件是否激活,避免无插件时出现报错 if ( class_exists( 'WCAM_Order_Model' ) ) { global $wcam_order_model; $order_attachments = $wcam_order_model->get_attachments_metadata( $order_id, array() ); // 有附件则输出下载链接,无附件显示提示文字 if ( ! empty( $order_attachments ) ) { foreach ( $order_attachments as $attachment ) { // 这里假设返回的附件数组包含url和name字段,若实际结构不同,可打印$order_attachments查看后调整 if ( isset( $attachment['url'], $attachment['name'] ) ) { echo '<a href="' . esc_url( $attachment['url'] ) . '" target="_blank">' . esc_html( $attachment['name'] ) . '</a><br>'; } } } else { echo '<span>' . __( '无附件', 'woocommerce' ) . '</span>'; } } else { echo '<span>' . __( '未启用订单附件插件', 'woocommerce' ) . '</span>'; } }
注意事项
- 把代码添加到子主题的functions.php文件或自定义功能插件中,避免主题更新导致代码丢失;
- 附件的输出逻辑需要根据
get_attachments_metadata返回的实际数组结构调整,若不确定可临时添加var_dump($order_attachments)查看字段详情; - 确保WooCommerce Attach Me!插件处于激活状态,否则附件列会显示插件未启用的提示。
内容的提问来源于stack exchange,提问作者user9602287
相关产品推荐
相关产品推荐

