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

在我的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 );

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

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

谢谢

最佳答案 转向使其仅适用于已完成的订单状态电子邮件通知,是在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),我已经进一步研究了这个插件的代码.

At line 358 you have the code below where I have add the condition.

/**
 * 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对象.唯一的事情是每次更新该插件时都必须再次添加此代码.

As this is untested, I am not sure that it will work. Please give me a feed back on it

点赞