2016-07-05 85 views
0

我试图在电子邮件上显示自定义字段。调用并显示WooCommerce自定义结帐字段值

这里的,我认为应该工作的脚本:

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

但它不工作。该字段的名称是'day'

应该这样工作吗?我错过了什么?

感谢。

+1

您是如何将该字段保存到数据库的?你确定*它在那里吗? – helgatheviking

+0

是的字段在数据库中完美工作。您的解决方案已完美运作,您是冠军,谢谢! – Adam

+0

@亚当不客气,不容易猜到:)谢谢。 – LoicTheAztec

回答

1

我假设你已经与显示的一些代码设置结帐页面上正确此自定义字段自定义字段并将该自定义字段的值保存在数据库的订单中(如果没有,则不会收到任何回复)

您需要先试图让这个自定义字段的值之前检索order ID并且可以有两种情况:

  1. 您已经在$order变量或对象。您只需与检索:
$order_id = $order->id; 

// or 

$order_id = str_replace('#', '', $order->get_order_number()); 
  • 你没有$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_id中的wp_postmeta表,表示meta_value => 'day'在对应的meta_value行/列中存在某个值。如果没有,当您创建此自定义字段并将其保存在结帐页上时,代码肯定存在问题。

    相关问题