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

如何在WooCommerce订单预览的商品行添加自定义列及数据

问题排查与解决方案

你的代码核心问题是错误使用了woocommerce_admin_order_preview_line_item_column钩子:这个钩子负责输出表格单元格的内部内容,而非整个<td>标签。WooCommerce会自动为每个列生成对应的<td>容器,你额外输出的<td>会导致HTML结构嵌套错误,浏览器无法正确渲染内容,因此看不到随机文本。

修正后的代码

只需修改custom_wc_order_preview_table_content函数,去掉多余的<td>标签,直接输出内容即可:

// Ajouter le contenu personnalisé à la ligne du tableau pour chaque produit dans la modale de prévisualisation de commande WooCommerce
function custom_wc_order_preview_table_content($item, $args) {
    // Vérifier si l'élément est un produit
    if ($item->is_type('line_item')) {
        // Générer un texte aléatoire pour tester
        $random_text = substr(str_shuffle("abcdefghijklmnopqrstuvwxyz"), 0, 5);

        // Afficher le texte aléatoire dans la nouvelle colonne
        if ('new' === $args['column_id']) {
            echo $random_text; // 直接输出内容,无需自行编写<td>标签
        }
    }
}
add_action('woocommerce_admin_order_preview_line_item_column', 'custom_wc_order_preview_table_content', 10, 2);

// Modifier l'ordre des colonnes dans le tableau de prévisualisation des commandes
function custom_wc_order_preview_table_header($columns) {
    // Ajouter la nouvelle colonne en seconde position
    $new_columns = array('new' => __('Nouvelle colonne', 'woocommerce'));
    $columns = array_slice($columns, 0, 1, true) + $new_columns + array_slice($columns, 1, count($columns) - 1, true);
    return $columns;
}
add_filter('woocommerce_admin_order_preview_line_item_columns', 'custom_wc_order_preview_table_header');

// Modifier la largeur des colonnes dans le tableau de prévisualisation des commandes
function custom_wc_order_preview_table_css() {
    echo '<style>.wc-order-preview-table__column--new { width: 20%; }</style>';
}
add_action('admin_head', 'custom_wc_order_preview_table_css');

扩展:添加行号(替代随机文本)

如果你的需求是显示商品行号,可以用静态变量实现计数:

function custom_wc_order_preview_table_content($item, $args) {
    if ($item->is_type('line_item')) {
        static $line_number = 1; // 静态变量保持计数状态
        if ('new' === $args['column_id']) {
            echo $line_number;
            $line_number++; // 每次调用递增计数
        }
    }
}

这样每个商品行就会依次显示1、2、3...的行号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 11:43:38