php - 如何在新订单电子邮件中显示 WooCommerce 自定义产品元?

标签 php wordpress woocommerce advanced-custom-fields post-meta

我目前已成功保存单个产品的自定义帖子元,如下所示:

    function save_payment_terms( $product_id ) {

        if ( isset( $_POST['payment_terms'] ) ) {
            update_post_meta( $product_id, 'payment_terms', is_numeric( $_POST['payment_terms'] ) ? absint( wp_unslash( $_POST['payment_terms'] ) ) : '1' );
        }

    }

我该如何将自定义帖子元添加到新订单确认电子邮件中?我尝试了以下 Hook 但没有成功:woocommerce_email_order_metawoocommerce_order_item_meta_start。最新的迭代如下:

add_action('woocommerce_order_item_meta_start', 'email_confirmation_display_order_items', 10, 4);

function email_confirmation_display_order_items($item_id, $item, $order, $plain_text) {
    echo '<div>Terms: '. wc_get_order_item_meta( $item_id, 'payment_terms') .'</div>';

}

结果是: enter image description here

wc_get_order_item_meta 执行 var_dump,我得到: ../snippet-ops.php(446) : eval()'d code:7: bool 值假

有谁可以解释一下吗?

最佳答案

请尝试以下操作:

add_action( 'woocommerce_order_item_meta_start', 'email_confirmation_display_order_items', 10, 3 );
function email_confirmation_display_order_items( $item_id, $item, $order ) {
    // On email notifications for line items
    if ( ! is_wc_endpoint_url() && $item->is_type('line_item') ) {
        $payment_terms = get_post_meta( $item->get_product_id(), 'payment_terms', true );

        if ( ! empty($payment_terms) ) {
            printf( '<div>' . __("Terms: %s", "woocommerce") . '</div>', $payment_terms );
        }
    }
}

代码位于事件子主题(或事件主题)的functions.php 文件中。它应该有效。

相关:WooCommerce Display avanced custom fields (ACF) inside order notification

关于php - 如何在新订单电子邮件中显示 WooCommerce 自定义产品元?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63838330/

相关文章:

php - MySql 按字段排序最后上传的第一个在有序 ID 的前面

php - DDBB 结构,以便我可以管理播放列表 - 当前、上一个、下一个

css - Woocommerce 星级评分编辑

php - woocommerce_cart_calculate_fees 在 woocommerce_before_cart_table 之后加载

css - Woocommerce 店面如何不隐藏移动设备上的搜索栏

php - 在产品搜索查询中添加 Hook

php - XOR 两个十六进制字符串

php - 无法将 css 类应用于动态菜单

javascript - 如何将javascript安全地插入数据库并按原样取回它们?

用于 symfony2 中功能测试的 PHPUnit DataProvider