如何在Dokan商家后台订单页面显示自定义字段
在Dokan商家后台订单页面展示WooCommerce自定义字段
1. 在订单详情页展示订单自定义字段
利用Dokan提供的订单详情页钩子,将你创建的订单自定义字段输出到商家后台的订单详情页面:
add_action( 'dokan_order_details_after_order_meta', 'display_woocommerce_order_custom_fields_to_dokan_vendor', 10, 1 ); function display_woocommerce_order_custom_fields_to_dokan_vendor( $order ) { // 替换为你实际的订单自定义字段键名与对应显示名称,多字段可扩展数组 $custom_fields = array( 'order_custom_field_key_1' => '自定义订单字段1', 'order_custom_field_key_2' => '自定义订单字段2' ); echo '<div class="dokan-section">'; echo '<h3 class="dokan-section-heading">自定义订单信息</h3>'; echo '<table class="dokan-table dokan-table-striped">'; foreach ( $custom_fields as $key => $label ) { $field_value = get_post_meta( $order->get_id(), $key, true ); if ( ! empty( $field_value ) ) { echo '<tr>'; echo '<td>' . esc_html( $label ) . '</td>'; echo '<td>' . esc_html( $field_value ) . '</td>'; echo '</tr>'; } } echo '</table>'; echo '</div>'; }
2. 在订单详情页展示客户自定义字段
如果是关联客户的自定义字段(存储在用户元数据中),可通过订单关联的用户ID获取并展示:
add_action( 'dokan_order_details_after_billing_address', 'display_woocommerce_customer_custom_fields_to_dokan_vendor', 10, 1 ); function display_woocommerce_customer_custom_fields_to_dokan_vendor( $order ) { $customer_id = $order->get_customer_id(); if ( ! $customer_id ) return; // 替换为你实际的客户自定义字段键名与对应显示名称 $customer_custom_fields = array( 'customer_custom_field_key_1' => '客户自定义字段1', 'customer_custom_field_key_2' => '客户自定义字段2' ); echo '<div class="dokan-section">'; echo '<h3 class="dokan-section-heading">客户自定义信息</h3>'; echo '<table class="dokan-table dokan-table-striped">'; foreach ( $customer_custom_fields as $key => $label ) { $field_value = get_user_meta( $customer_id, $key, true ); if ( ! empty( $field_value ) ) { echo '<tr>'; echo '<td>' . esc_html( $label ) . '</td>'; echo '<td>' . esc_html( $field_value ) . '</td>'; echo '</tr>'; } } echo '</table>'; echo '</div>'; }
3. 在订单列表页添加自定义字段列
若需要在商家后台的订单列表中直接展示自定义字段,可添加自定义列并填充内容:
// 给订单列表添加自定义列 add_filter( 'dokan_order_list_table_columns', 'add_custom_column_to_dokan_order_list' ); function add_custom_column_to_dokan_order_list( $columns ) { // 在状态列后插入自定义列,可调整位置 $columns['order_custom_field'] = '自定义字段'; return $columns; } // 填充自定义列的内容 add_action( 'dokan_order_list_table_column_order_custom_field', 'fill_custom_column_in_dokan_order_list', 10, 2 ); function fill_custom_column_in_dokan_order_list( $column, $order ) { // 替换为你要展示的订单自定义字段键名 $field_value = get_post_meta( $order->get_id(), 'order_custom_field_key_1', true ); echo esc_html( $field_value ?: '-' ); }
使用说明
- 将上述代码添加到WordPress主题的
functions.php文件,或使用自定义代码插件(如Code Snippets)避免修改主题文件。 - 务必替换代码中的字段键名与显示名称为你实际创建的自定义字段信息。
- 操作前建议备份相关文件,避免出现意外错误。
内容的提问来源于stack exchange,提问作者freddy garcia
相关产品推荐
相关产品推荐

