在 WooCommerce 中将列添加到管理订单列表

Posted

技术标签:

【中文标题】在 WooCommerce 中将列添加到管理订单列表【英文标题】:Add columns to admin orders list in WooCommerce 【发布时间】:2016-07-26 14:09:15 【问题描述】:

我正在为我的一个电子商务 WordPress 网站使用 WooCommerce 插件。我想在 WooCommerce 管理区域的订单列表页面中添加一些列。我无法找到在哪里添加它。

谁能建议我需要修改哪个模板页面才能满足我的要求?

【问题讨论】:

您的意思是,您要在“购物车”页面上添加列吗? 请在此处阅读以下内容wordpress.org/plugins/woocommerce-custom-product-data-fields @claudios : 我想添加那些存在于 mysql 订单表中的列,它们的值不是数据库表中不可用的任何字段 看看我想要的是图片dropbox.com/s/6s4956wsrnl83iz/imgpsh_fullsize.png?dl=0 管理区域没有模板覆盖...你能解释一下你的问题吗?请具体说明一下... 【参考方案1】:

更新: 2018-03-30 - 为新列添加了定位功能

因此,如果您想在订单管理列表页面(在后端)中添加一些列:

在 WOOCOMMERCE 管理员订单列表中添加列

在下面的示例中,我们在现有的“Total”和“Actions”列之前添加了 2 个新的自定义列。

// ADDING 2 NEW COLUMNS WITH THEIR TITLES (keeping "Total" and "Actions" columns at the end)
add_filter( 'manage_edit-shop_order_columns', 'custom_shop_order_column', 20 );
function custom_shop_order_column($columns)

    $reordered_columns = array();

    // Inserting columns to a specific location
    foreach( $columns as $key => $column)
        $reordered_columns[$key] = $column;
        if( $key ==  'order_status' )
            // Inserting after "Status" column
            $reordered_columns['my-column1'] = __( 'Title1','theme_domain');
            $reordered_columns['my-column2'] = __( 'Title2','theme_domain');
        
    
    return $reordered_columns;


// Adding custom fields meta data for each new column (example)
add_action( 'manage_shop_order_posts_custom_column' , 'custom_orders_list_column_content', 20, 2 );
function custom_orders_list_column_content( $column, $post_id )

    switch ( $column )
    
        case 'my-column1' :
            // Get custom post meta data
            $my_var_one = get_post_meta( $post_id, '_the_meta_key1', true );
            if(!empty($my_var_one))
                echo $my_var_one;

            // Testing (to be removed) - Empty value case
            else
                echo '<small>(<em>no value</em>)</small>';

            break;

        case 'my-column2' :
            // Get custom post meta data
            $my_var_two = get_post_meta( $post_id, '_the_meta_key2', true );
            if(!empty($my_var_two))
                echo $my_var_two;

            // Testing (to be removed) - Empty value case
            else
                echo '<small>(<em>no value</em>)</small>';

            break;
    

代码进入您的活动子主题(或活动主题)的 function.php 文件中。经过测试并且可以工作。


相关答案(针对产品):Add custom columns to admin producs list in WooCommerce backend

【讨论】:

这段代码不完全正确 - 为什么需要全局 $post,而 $post 从未使用过?此外,$post 后面有一个逗号,而不是 ';' - 所以这会导致错误。还有 - wc_get_order_item_meta 在这里是错误的,这是用于订单内的项目,因为订单本身必须使用 get_post_meta。 @Torben ......这是一个旧答案,你是完全正确的......我做出了改变。对不起。 @LoicTheAztec 谢谢.. 我工作但我在 wp_postmeta 表中找不到列。我也发布了我的问题wordpress.stackexchange.com/questions/301246/…请帮助 @Zam85 使用变量 $post_id @LoicTheAztec 谢谢

以上是关于在 WooCommerce 中将列添加到管理订单列表的主要内容,如果未能解决你的问题,请参考以下文章

在 WooCommerce 管理员订单列表中添加带有付款网址的自定义列

在 Woocommerce 订单管理列表中显示用户失败并取消订单计数

在 WooCommerce 我的帐户订单自定义列中添加“支付订单”按钮

在Magento 1.6.1中将SKU列添加到订单网格

将自定义列产品可见性添加到 Woocommerce 3 中的管理产品列表

在 WooCommerce 中为新客户订单添加订单备注