WooCommerce:将列添加到订单管理页面,其中包含已购买的商品

时间:2017-04-20 作者:Sender

更新至Woocommerce 3.0后,Woocommerce订单页面(您可以在其中检查客户的所有订单,包括订单状态、账单地址、发货地址、总计等)中缺少包含客户购买的项目的列。在WC更新之前,该列已经存在。现在它不见了。

谁能帮我再加一次这个专栏吗?

非常感谢!

3 个回复
SO网友:Sender

由于以下原因,我已经成功创建了一个专栏:

    // ADDING COLUMN TITLES
add_filter( \'manage_edit-shop_order_columns\', \'custom_shop_order_column\',11);
function custom_shop_order_column($columns)
{
   //add columns
    $columns[\'my-column1\'] = __( \'Column Title\',\'theme_slug\');
   return $columns;
}

// adding the data for each orders by column (example)
add_action( \'manage_shop_order_posts_custom_column\' , \'custom_orders_list_column_content\', 10, 2 );
function custom_orders_list_column_content( $column )
{
    global $post, $woocommerce, $the_order;
    $order_id = $the_order->id;

    switch ( $column )
    {
        case \'my-column1\' :
            $myVarOne = wc_get_order_item_meta( $order_id, \'_the_meta_key1\', true );
            echo $myVarOne;
            break;
    }
但我不知道如何将数据添加到此列。我需要添加客户购买的物品。有可能吗?

谢谢

SO网友:Scotty G

我用它来添加Ordered Products 列,位于Date 列(非常适合那里)。每个产品还链接到其适当的编辑页面。

// ----- add column to orders that shows which products were ordered -----
function ec_order_items_column($columns) {
    $new_columns = array();
    foreach($columns as $key=>$column){
        $new_columns[$key] = $columns[$key];
        if($key === \'order_date\') {
            $new_columns[\'ordered_products\'] = __(\'Ordered Products\',\'woo-custom-ec\');
        }
    }
    return $new_columns;

    //$columns[\'order_products\'] = "Purchased Items";
    //return $columns;
}
add_filter(\'manage_edit-shop_order_columns\', \'ec_order_items_column\', 99 );

// ----- add data to new column that shows which products were ordered -----
function ec_order_items_column_cnt($column) {
    global $the_order; // the global order object
    if($column == \'ordered_products\') {
        // get items from the order global object
        $order_items = $the_order->get_items();
        if (!is_wp_error($order_items)) {
            foreach($order_items as $order_item) {
                echo $order_item[\'quantity\'].\'&nbsp;&times;&nbsp;<a href="\'.admin_url(\'post.php?post=\'.$order_item[\'product_id\'].\'&action=edit\' ).\'">\'.$order_item[\'name\'].\'</a><br />\';
            }
        }
    }
}
add_action(\'manage_shop_order_posts_custom_column\', \'ec_order_items_column_cnt\', 99);

enter image description here

SO网友:Misha Rudrastyh

如果要在列中显示购买的产品,可以使用以下代码:

add_action( \'manage_shop_order_posts_custom_column\' , \'custom_orders_list_column_content\', 10, 2 );
function custom_orders_list_column_content( $column )
{
    global $the_order;
    $order_id = $the_order->id;

    switch ( $column )
    {
        case \'my-column1\' :
            $order_items = $the_order->get_items();
            foreach( $order_items as $myVarOne ) {
                echo $myVarOne[\'quantity\'] .\'&nbsp;&times;&nbsp;\'. $myVarOne[\'name\'] .\'<br />\';
            }
            break;
    }
}
您还可以在中查看完整的代码和屏幕截图this tutorial.

相关推荐

绑定到WooCommerce_Payment_Complete_Order_Status的函数会阻止订单状态为“正在处理”

我正在将一个函数绑定到woocommerce_payment_complete_order_status 它根据优惠券是否用于下订单创建自定义贴子。代码一切正常-创建帖子,付款完成,网站返回thankyou页面,但订单在等待付款时被卡住。因此,不知何故,运行此函数会阻止从等待付款状态到处理订单状态的移动,因此最终会过期并取消订单。知道为什么吗?也许是个更好的地方?以下是完整代码:function create_fundraiser_purchase_post( $order_status, $order_