如何编辑订单布局 table (orders.php)

How to edit layout of orders table (orders.php)

我想更改 orders.php 中 table 的布局。具体来说,我不想让行包含数据(名称、日期、状态等),而是希望每个产品都有单独的水平卡片。

示例:https://i.stack.imgur.com/itdGU.png。我正在尝试使用短代码来执行此操作,但我不确定这是否是正确的方法。谁能给我指路?

现在我正在尝试这种方式:下面的代码有效并且returns 所有订单号都正确。但是,我将所有订单号并排显示为一行简单的文本:https://i.stack.imgur.com/RqdVC.png。我不知道如何插入 div 或 css 类 来更改布局。

即使我添加了 css 类,剩下的问题是如何添加其他元素,例如名称、价格、状态等。不确定是否可以在一个短代码中全部完成。建议 ?

// GET ALL ORDERS NUMBER OF CURRENT USER

// Give the callback function a clear and descriptive name.
add_shortcode( 'prcsed_order_numbers' , 'prcsed_order_1' );
function prcsed_order_1() {
 
// Get all orders for the current user.
   $customer_orders = wc_get_orders([
    'customer_id' => get_current_user_id(),
   ]);

// Transform the array of order objects into an array of order names.
   $order_numbers = array_map( function( $order ) {
       return $order->get_order_number();
   }, $customer_orders );

// Return as a string, ready for output,
   return implode( ', ', $order_numbers );
}

扩展我之前输入的内容。您可以使用您在 $order_numbers 中已经执行的操作来访问更多订单变量。这是我在独立的 WooCommerce 测试站点上测试过的内容。您将需要输入您的客户 ID 函数并修改 return HTML 结构以简化样式和编辑。我有的东西不干净,但确实有效。

$results = wc_get_orders([ 'cutomer_id'=>1 ]);

foreach ( $results as $order ) {    
    $first_name = $order->get_billing_first_name();
    $last_name = $order->get_billing_last_name();
    $status = $order->get_status();
    
    echo '<h1>' . $first_name . ' ' . $last_name . '</h1><p>' . $status . '</p>';
}

下面的 link 为您提供了您需要访问的订单对象的 functions/hooks。 https://www.businessbloomer.com/woocommerce-easily-get-order-info-total-items-etc-from-order-object/