在邮件中获取WooCommerce的订单日期时间。

问题描述 投票:1回答:1

我在网站前端的几个地方添加了以下功能,以显示基于当前日期的预计交货日期。

<?php $del_from = date('jS F', strtotime("+10 days"));
      $del_to = date('jS F', strtotime("+30 days"));
      $html = "Order today for estimated delivery between <b>{$del_from}</b> and <b>{$del_to}</b>. <a href='deliveryinfopageURL' target='_blank'>Read more about delivery</a>.";

   echo $html;
?>

我想在发货通知邮件中加入这个功能(文字略有不同),但不是使用当前日期+X天,而是使用订单日期+X天,因为那是履行过程开始的时间。这可能吗?

另外,为了在WooCommerce的电子邮件模板中工作,是否还有其他需要改变的地方?比如改变文本中超链接的放置方式?

php wordpress woocommerce orders email-notifications
1个回答
1
投票

在大多数的电子邮件模板或电子邮件钩子中,... WC_Order 对象 $order 是可以访问的,所以你可以使用以下其中一种方法 WC_Order 方法。

  • get_date_created(),
  • get_date_modified(),
  • get_date_paid(),
  • get_date_completed()

而你会得到 WC_DateTime 对象,你可以在你的代码中使用像。

<?php 
    $order_datetime  = $order->get_date_created(); // Get order created date ( WC_DateTime Object ) 
    $order_timestamp = $order_datetime->getTimestamp(); // get the timestamp in seconds
    $day             = 86400; // 1 day in seconds

    $delivery_url    = 'deliveryinfopageURL'; // <== Set the correct URL to the delivery page
    $delivery_txt    = __("Read more about delivery", "woocommerce");

    // Output / display
    printf( 
        __('Order today for estimated delivery between %s and %s. %s', "woocommerce"),
        '<strong>'.date('jS F', $order_timestamp + (10 * $day) ).'</strong>',
        '<strong>'.date('jS F', $order_timestamp + (30 * $day) ).'</strong>',
        '<a href="'.$delivery_url.'" target="_blank">'.$delivery_txt.'</a>'
    );
?>

它应该在电子邮件模板上工作。

如果 WC_order 对象是不可访问的,但您可以访问相关的 WC_email 对象 $email 而得到 WC_Order 对象与。$order = $email->object;

© www.soinside.com 2019 - 2024. All rights reserved.