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

时间:2016-07-05 23:35:14

标签: php wordpress woocommerce checkout orders

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

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

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

但它不起作用。该字段的名称为 'day'

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

感谢。

2 个答案:

答案 0 :(得分:1)

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

在尝试获取此自定义字段的值之前,首先需要检索order ID,并且可能有两种情况:

  1. 您已经拥有$order变量或对象。您只需使用以下命令检索它:
  2. $order_id = $order->id;
    
    // or
    
    $order_id = str_replace( '#', '', $order->get_order_number() );
    
    1. 您没有$order对象,您需要先获取它:
    2. 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_id wp_postmeta内的meta_value => 'day'中检入您的数据库,meta_value存在一些值相应的reduce行/列。如果没有,当您创建此自定义字段并将值保存在结帐页面时,您的代码肯定存在问题。

答案 1 :(得分:0)

对于像这样的显示自定义字段

<?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/