在我的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 );
但它会删除所有电子邮件通知中的条形码。
如何从电子邮件通知中删除这些条形码,并仅在完成的电子邮件通知中显示?
由于
答案 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
对象。唯一的事情是每次更新该插件时都必须再次添加此代码。
由于这是未经测试的,我不确定它是否会起作用。请给我一个反馈