仅显示已完成订单状态电子邮件通知的条形码

时间:2016-12-13 08:00:53

标签: php wordpress woocommerce barcode email-notifications

在我的WooCommerce网站上,我使用Woocommerce Order Barcodes显示电子邮件通知的订单条形码。
我想隐藏或删除此条形码,并在已完成订单状态电子邮件通知上显示

我曾尝试编辑插件文件(我知道不推荐这样做)。我已在 class-woocommerce-order-barcodes.php 插件文件中删除了此内容(第128行 - 第129行):

// Add barcode to order complete email
add_action( 'woocommerce_email_after_order_table', array( $this, 'get_email_barcode' ), 1, 1 );

但它会删除所有电子邮件通知中的条形码。

如何从电子邮件通知中删除这些条形码,并仅在完成的电子邮件通知中显示?

由于

1 个答案:

答案 0 :(得分:2)

转向使其仅适用于已完成的订单状态电子邮件通知,只是在IF语句中添加这个小条件:

$order->has_status( 'completed' )

所以你可以先这样试试:

if (!$this->has_status( 'completed' ) ){
    add_action( 'woocommerce_email_after_order_table', array( $this, 'get_email_barcode' ), 1, 1 );
}

但由于我不确定在那里得到$ order对象($ this),我已经进一步研究了这个插件的代码。

  

第358行,您有以下代码我已添加条件。

/**
 * Get barcode for display in an email
 * @access  public
 * @since   1.0.0
 * @param   object $order Order object
 * @return  void
 */
public function get_email_barcode ( $order ) {

    if( ! $order ) return;

    // HERE is my condition  <====  <====  <====  <====  <====  <====  <====
    if (!$order->has_status( 'completed' ) ) return;

    // Generate correctly formatted HTML for email
    ob_start(); ?>

// … / …
// code of the function continues …

我非常确定这会有效,因为我们已经获得了 $order 对象。唯一的事情是每次更新该插件时都必须再次添加此代码。

  

由于这是未经测试的,我不确定它是否会起作用。请给我一个反馈