如何防止在 WooCommerce 电子邮件通知中运行挂钩

Posted

技术标签:

【中文标题】如何防止在 WooCommerce 电子邮件通知中运行挂钩【英文标题】:How to prevent hook running in WooCommerce email notifications 【发布时间】:2022-01-08 04:45:08 【问题描述】:

我已经编写了这个函数来在 WooCommerce 的订单接收页面上显示类别和类别 ID。

但是,我希望禁止在 WooCommerce 订单电子邮件中显示此内容。有什么建议吗?

// Display order items product categories and ids
add_action( 'woocommerce_order_item_meta_end', 'display_custom_data_in_emails', 10, 4 );
function display_custom_data_in_emails( $item_id, $item, $order, $bool ) 
    // Get the product categories for this item
    $terms = wp_get_post_terms( $item->get_product_id(), 'product_cat', array( 'fields' => 'names' ) );
  $term_ids = wp_get_post_terms( $item->get_product_id(), 'product_cat', array('fields' => 'ids') );
    
    // Output a coma separated string of product category names
    echo "<br><small>" . implode(', ', $terms) . "</small>";
      echo "<br><small>" . implode(', ', $term_ids) . "</small>";
    



【问题讨论】:

【参考方案1】:

可以使用! is_wc_endpoint_url()判断是否是邮件通知

所以你得到:

function action_woocommerce_order_item_meta_end( $item_id, $item, $order, $plain_text )    
    // NOT on emails notifications
    if ( ! is_wc_endpoint_url() ) return;
    
    // Get the product categories for this item
    $terms = wp_get_post_terms( $item->get_product_id(), 'product_cat', array( 'fields' => 'names' ) );
    $term_ids = wp_get_post_terms( $item->get_product_id(), 'product_cat', array( 'fields' => 'ids' ) );
    
    // Output a coma separated string of product category names
    echo "<br><small>" . implode( ', ', $terms ) . "</small>";
    echo "<br><small>" . implode( ', ', $term_ids ) . "</small>";

add_action( 'woocommerce_order_item_meta_end', 'action_woocommerce_order_item_meta_end', 10, 4 );

只定位收到的订单(谢谢)页面:

if ( is_wc_endpoint_url( 'order-received' ) ) 
    // do something

【讨论】:

以上是关于如何防止在 WooCommerce 电子邮件通知中运行挂钩的主要内容,如果未能解决你的问题,请参考以下文章

在 Woocommerce 购物车、结帐页面、订单和电子邮件通知中的产品标题上方显示品牌名称

在 WooCommerce 电子邮件通知中更改订单项元数据

在 Woocommerce 订单和电子邮件通知中显示产品品牌和名称

在 Woocommerce 订单电子邮件通知中获取用户 ID [重复]

从 WooCommerce 中的电子邮件通知中删除 BACS 指令

通过 WooCommerce 管理员电子邮件通知中的“woocommerce_email_order_meta”挂钩显示产品自定义字段