php WooCommerce自定义PDF插件与订单和订单项目数据的问题

gkl3eglg  于 2023-10-15  发布在  PHP
关注(0)|答案(1)|浏览(111)

对于我的WooCommerce商店,我正在编写一个插件,当放置一个项目时,创建一个带有提货单和送货标签的PDF。这一切都工作,除了我似乎不能得到的项目在订单中,我可以得到订单状态和其他部分的订单只是不是项目。

// Getting an instance of the WC_Order object from a defined ORDER ID
    $order = wc_get_order( $order_id );

    // Iterating through each "line" items in the order
    foreach ($order->get_items() as $item_id => $item ) {

    // Get an instance of corresponding the WC_Product object
    $product        = $item->get_product();
    $product_name   = $item->get_name(); // Get the item name (product name)
    $item_quantity  = $item->get_quantity(); // Get the item quantity

    // Add item name and quantity to the PDF (Picking List)
    $pdf->Cell(0, 10, "Product name: '.$product_name.' | Quantity: '.$item_quantity.'", 0, 1);
}

我尝试将项目推到调试日志,但它没有显示项目的详细信息,所以我认为这是我获取项目的方式,而不是将它们写入PDF的错误。

ca1c2owp

ca1c2owp1#

首先,你需要确保你得到了正确的订单ID,因为没有它,什么都不起作用(正如你所描述的)。
尝试启用WP_DEBUG,如如何在WooCommerce 3+中调试答案中所述。
然后在$order = wc_get_order( $order_id );之前插入以下 (临时,用于调试)

error_log( 'Order_id: ' . $order_id ); // Display the order ID in the debug.log file

if ( ! ( $order_id && $order_id > 0 ) ) {
    return; // Exit if not a numerical order ID greater than 0
}

然后,当您确定拥有与订单相关的正确订单ID时,可以删除调试代码并禁用WP_DEBUG
现在,在最后一行代码中有一个小错误 (双引号与单引号字符串连接问题)

// Add item name and quantity to the PDF (Picking List)
  $pdf->Cell(0, 10, "Product name: '.$product_name.' | Quantity: '.$item_quantity.'", 0, 1);

需改为:

// Add item name and quantity to the PDF (Picking List)
$pdf->Cell(0, 10, "Product name: {$product_name} | Quantity: {$item_quantity}", 0, 1);

或与:

// Add item name and quantity to the PDF (Picking List)
$pdf->Cell(0, 10, "Product name: ".$product_name." | Quantity: ".$item_quantity, 0, 1);

应该可以的
相关信息:

  • 如何获取WooCommerce订单详情
  • 在WooCommerce 3中获取订单项目和WC_Order_Item_Product

相关问题