调用和显示 WooCommerce 自定义结帐字段值

Calling and displaying a WooCommerce custom checkout field value

我正在尝试在电子邮件中显示自定义字段。

这是我认为应该有效的脚本:

<?php if ($day) : ?>
<p><strong><?php _e('day:', 'woocommerce-pip'); ?></strong> <?php echo $order->day; ?></p>
<?php endif; ?>

但是没用。该字段的名称是 'day'

这应该有效吗?我错过了什么?

谢谢。

像这样显示自定义字段

<?php echo get_post_meta( get_the_ID(), ‘tes_custom_field’, true ); ?>

有关更多信息,请查看这个非常好的教程 http://www.themelocation.com/how-to-display-custom-field-value-on-product-page-in-woocommerce/

我假设您已经在结帐页面上使用一些显示自定义字段的代码正确设置了此自定义字段,并将此自定义字段的值保存在数据库中的订单中 (如果没有,您什么也得不到).

您需要先检索 order ID,然后再尝试获取此自定义字段的值,可能有 2 种情况:

  1. 您已经有了 $order 变量或对象。您只需通过以下方式检索它:
$order_id = $order->id;

// or

$order_id = str_replace( '#', '', $order->get_order_number() );
  1. 您没有 $order 对象,您需要先获取它:
global $woocommerce, $post;
$order = new WC_Order( $post->id );

// and after you can get the order ID

$order_id = $order->id;

// or

$order_id = str_replace( '#', '', $order->get_order_number() );

现在您可以获取值并显示它,因为您有 $order_id:

<?php $day = get_post_meta( $order_id, 'day', true );
    if ( !empty( $day ) ) : ?>
    <p><strong><?php _e('day:', 'woocommerce-pip'); ?></strong> <?php echo $day; ?></p>
<?php endif; ?>

但是您应该在 order_id 中检查您的数据库,如 post_idwp_postmeta table 中,那个 meta_value => 'day' 在相应的 meta_value row/column 中存在一些值。如果不是,那么当您创建此自定义字段并将值保存在结帐页面时,您的代码肯定有问题。