如何从客户订单详细信息电子邮件WooCommerce中删除变化信息

时间:2020-07-10 10:25:27

标签: javascript wordpress woocommerce metadata hook-woocommerce

我想从客户订单详细信息电子邮件中删除变式发货和发货方式。

我可以使用JavaScript删除发件人,但结帐后只能在订单详细信息页面中隐藏属性。

//remove Ship from Order
var OrderShipF = document.getElementsByClassName("wc-item-meta")[0];
var OrderShipFF= OrderShipF.getElementsByTagName("li"); 
     for (var i=0;i<OrderShipFF.length;i++){
     OrderShipFFF= OrderShipFF[i].getElementsByClassName("wc-item-meta-label")[0].innerHTML;
       if (OrderShipFFF=="Ships From:"){
           OrderShipFF[i].style.display = "none";
       }
   }

如何从客户电子邮件中删除元数据,标题为woocommerce_email_customer_details的过滤器可用于编辑此数据。但是我不知道在哪里应用过滤器。

我认为我们应该在此处添加测试(如果=='From Ship'):class-wc-emails.php

if ( $plain_text ) {

            foreach ( $fields as $field ) {
                if ( isset( $field['label'] ) && isset( $field['value'] ) && $field['value'] ) {
                    echo $field['label'] . ': ' . $field['value'] . "\n"; // WPCS: XSS ok.
                }
            }
        } 

/**
 * Add order meta to email templates.
 *
 * @param WC_Order $order         Order instance.
 * @param bool     $sent_to_admin If should sent to admin.
 * @param bool     $plain_text    If is plain text email.
 */
public function order_meta( $order, $sent_to_admin = false, $plain_text = false ) {
    $fields = apply_filters( 'woocommerce_email_order_meta_fields', array(), $sent_to_admin, $order );

    /**
     * Deprecated woocommerce_email_order_meta_keys filter.
     *
     * @since 2.3.0
     */
    $_fields = apply_filters( 'woocommerce_email_order_meta_keys', array(), $sent_to_admin );

    if ( $_fields ) {
        foreach ( $_fields as $key => $field ) {
            if ( is_numeric( $key ) ) {
                $key = $field;
            }

            $fields[ $key ] = array(
                'label' => wptexturize( $key ),
                'value' => wptexturize( get_post_meta( $order->get_id(), $field, true ) ),
            );
        }
    }

    if ( $fields ) {

        if ( $plain_text ) {

            foreach ( $fields as $field ) {
                if ( isset( $field['label'] ) && isset( $field['value'] ) && $field['value'] ) {
                    echo $field['label'] . ': ' . $field['value'] . "\n"; // WPCS: XSS ok.
                }
            }
        } else {

            foreach ( $fields as $field ) {
                if ( isset( $field['label'] ) && isset( $field['value'] ) && $field['value'] ) {
                    echo '<p><strong>' . $field['label'] . ':</strong> ' . $field['value'] . '</p>'; // WPCS: XSS ok.
                }
            }
        }
    }
}
/**
 * Is customer detail field valid?
 *
 * @param  array $field Field data to check if is valid.
 * @return boolean
 */
public function customer_detail_field_is_valid( $field ) {
    return isset( $field['label'] ) && ! empty( $field['value'] );
}

/**
 * Allows developers to add additional customer details to templates.
 *
 * In versions prior to 3.2 this was used for notes, phone and email but this data has moved.
 *
 * @param WC_Order $order         Order instance.
 * @param bool     $sent_to_admin If should sent to admin.
 * @param bool     $plain_text    If is plain text email.
 */
public function customer_details( $order, $sent_to_admin = false, $plain_text = false ) {
    if ( ! is_a( $order, 'WC_Order' ) ) {
        return;
    }

    $fields = array_filter( apply_filters( 'woocommerce_email_customer_details_fields', array(), $sent_to_admin, $order ), array( $this, 'customer_detail_field_is_valid' ) );

    if ( ! empty( $fields ) ) {
        if ( $plain_text ) {
            wc_get_template( 'emails/plain/email-customer-details.php', array( 'fields' => $fields ) );
        } else {
            wc_get_template( 'emails/email-customer-details.php', array( 'fields' => $fields ) );
        }
    }
}

example image

0 个答案:

没有答案
相关问题