如何在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
相关产品推荐
相关产品推荐

