如何从 WooCommerce 订单项中获取和显示产品自定义字段

问题描述

我正在为我的 woocommerce 商店开发发票系统。

我正在使用一个插件,为所有产品添加重量单位自定义字段(简单且适用于变体产品的每个变量)

我设法将数量单位列添加到发票插件中,对于简单的产品,我设法获取了该字段。

另一方面,此方法不适用于获取可变产品中变体的单位。

以下代码是我用来获取自定义字段代码

请帮忙

/**
     * Adds line item quantity to columns data array.
     *
     * @param array  $data    line item data.
     * @param int    $item_id item ID.
     * @param object $item    item object.
     */
    public function add_quantity_column_data( &$data,$item_id,$item ) {
        $product_id = $item->get_product_id();
        $quantity_suffix = get_post_meta( $product_id,'_upw_quantity_suffix',true);
        $quantity_suffix_sep = " ";
        $data['quantity'] = $item['qty'] . $quantity_suffix_sep . $quantity_suffix
        
    }

自定义字段键为 _upw_quantity_suffix

解决方法

要处理产品变体自定义字段,您可以尝试这个重新访问的代码版本:

/**
 * Adds line item quantity to columns data array.
 *
 * @param array  $data    line item data.
 * @param int    $item_id item ID.
 * @param object $item    WC_Order_Item_Product Object.
 */
public function add_quantity_column_data( &$data,$item_id,$item ) {
    $product    = $item->get_product();
    $qty_suffix = $product->get_meta( '_upw_quantity_suffix' );
    $sepatator  = ' ';

    if ( ! empty($qty_suffix) ) {
        $data['quantity'] = $item['qty'] . $sepatator . $qty_suffix;
    }
}

它应该可以工作。

或者你也可以试试:

/**
 * Adds line item quantity to columns data array.
 *
 * @param array  $data    line item data.
 * @param int    $item_id item ID.
 * @param object $item    WC_Order_Item_Product Object.
 */
public function add_quantity_column_data( &$data,$item ) {
    $product    = $item->get_product();
    $qty_suffix = $product->get_meta( '_upw_quantity_suffix' );

    if ( empty($qty_suffix) ) {
        $product    = wc_get_product( $item->get_product_id() );
        $qty_suffix = $product->get_meta( '_upw_quantity_suffix' );
    }
    $sepatator  = ' ';

    if ( ! empty($qty_suffix) ) {
        $data['quantity'] = $item['qty'] . $sepatator . $qty_suffix;
    }
}