当前位置: 首页 > 知识库问答 >
问题:

如果产品在WooCommerce中具有特定的自定义字段,则显示订单项目的估计交货日期

漆雕誉
2023-03-14

我正在以编程方式添加一个产品自定义字段(估计交货日期),作为从延期订单订购产品时的自定义购物车项目数据。

我想在订单项目上也显示这些信息,以便在发送给客户的订单和电子邮件通知上显示这些信息。

以下是我迄今为止所做的尝试:

add_filter( 'woocommerce_get_item_data', 'display_acf_on_cart_and_checkout', 10, 2 );
function display_acf_on_cart_and_checkout( $cart_data, $cart_item ) {
    if ( ($cart_item['variation_id'] > 0 && $cart_item['data']->get_stock_quantity() <= 0
    && $cart_item['data']->get_meta('_ab_preorder_checkbox') === 'yes') || isset( $cart_item['is_preorder_field'] ) ) {
        if ( $estimated_delivery_date = $cart_item['data']->get_meta('_ab_preorder_estimated_date') ) {
            $custom_items[] = array( "name" => __("Date de livraison estimée (précommande) ", "woocommerce"),  "value" => $estimated_delivery_date );
        }
    }
    return $custom_items;
}

邮件显示在购物车和结账页面上:

但不在发送给客户的发票/电子邮件上:

我希望它显示在下面的屏幕截图上(红色矩形中)。可能吗?

感谢您的帮助。

共有1个答案

有骏奇
2023-03-14

您可以使用以下命令将预订购项目的预计交货日期保存为自定义订单项目元数据,并在订单和电子邮件通知中显示它:

// Save as custom order item meta data and display on orders and email notifications
add_action('woocommerce_checkout_create_order_line_item', 'action_checkout_create_order_line_item', 10, 4 );
function action_checkout_create_order_line_item( $item, $cart_item_key, $values, $order ) {
    if ( ($values['variation_id'] > 0 && $values['data']->get_stock_quantity() <= 0
    && $values['data']->get_meta('_ab_preorder_checkbox') === 'yes') || isset( $values['is_preorder_field'] ) ) {
        if ( $estimated_delivery_date = $values['data']->get_meta('_ab_preorder_estimated_date') ) {
            $item->update_meta_data( 'is_preorder', $estimated_delivery_date );
        }
    }
}

// Change required displayed meta key label to something readable
add_filter('woocommerce_order_item_display_meta_key', 'filter_order_item_displayed_meta_key', 20, 3 );
function filter_order_item_displayed_meta_key( $displayed_key, $meta, $item ) {
    // Change displayed meta key label for specific order item meta key
    if( $item->get_type() === 'line_item' && $meta->key === 'is_preorder' ) {
        $displayed_key = __("Date de livraison estimée (précommande) ", "woocommerce");
    }
    return $displayed_key;
}

代码进入函数。活动子主题(或活动主题)的php文件。它应该会起作用。

 类似资料:
  • 是否有一种方法可以在WooCommerce订单页面的每个产品下显示我的自定义SKU? 当我编辑产品时,自定义sku显示良好,但它不会显示在产品的订单页面中。我需要在订单上显示此信息,以便Zapier可以将其与产品的Visma帐户软件ArticleID匹配。 此尝试基于如何向WooCommerce产品添加(第二个)自定义sku字段的解决方案?

  • 这个问题是关于如何在WooCommerce订单中显示产品自定义字段(自定义SKU)的,这是对我前面问题的回答。 如何使产品自定义字段(自定义SKU)仅在每个订单项目的管理订单编辑页面中可见? 此外,它不适用于手动订单。如何在手动订单上显示产品自定义字段(自定义SKU)?

  • 我对woocommerce(最新版本)中的自定义字段有问题。我需要你的帮助。 我的代码 现在我在从自定义字段获取数据时遇到问题。字段被保存到数据库中,因为在我编辑产品时,值在字段中,但在完成订单后,我无法在钩子中获取它:(我尝试使用get_post_meta、get_meta和其他方法,但都不起作用。有人知道原因吗?

  • 以下仅在WooCommerce Admin single orders中显示产品自定义字段回答我的上一个问题,其中: 添加自定义SKU字段(ArticleID) 将自定义SKU(ArticleID)保存为隐藏订单项元数据 将自定义SKU(ArticleID)保存为手动订单的隐藏订单项元数据 然而,最后一部分(手动订单)似乎与我为网关费用添加的其他自定义代码相冲突: 当我尝试更新或更改已应用网关费用

  • 我成功地在后端的产品变化中的WooCommerce中创建了一个ACF自定义字段。该字段在每个变化中正确显示。 但是在编辑变体中的此字段或其他字段后,我无法再保存整个变体选项卡。加载/保存指示器圆圈继续无限旋转。并且定制字段未显示在前端的单个产品变体中。 我所做的是将以下代码添加到我的: 任何帮助都将不胜感激。

  • 在woocommerce上,我使用以下代码在购物车和结账时呈现一些产品自定义字段: 如何在订单中显示自定义产品字段wccpf_输入_product_id'值? 谢谢

  • 在Woocommerce中,我试图使一个定制的div容器在可变产品的变体缺货时可见,但在缺货时可用。