การเพิ่มที่อยู่อีเมลที่สองในการสั่งซื้อที่เสร็จสมบูรณ์ใน WooCommerce [ปิด]


11

ก่อนที่ฉันจะถามคำถามนี้ฉันรู้ว่ามีความลังเล (ถูกกฎหมาย) ในการตอบคำถามที่นี่เกี่ยวกับผลิตภัณฑ์ของ Woo เนื่องจากพวกเขาได้รับการสนับสนุนและผู้ใช้ควรได้รับการสนับสนุนให้ใช้สิ่งนั้น ฉันเป็นผู้ใช้ Woo ที่จ่ายเงิน แต่ไม่สามารถแก้ปัญหานี้ได้ด้วยการสนับสนุนที่มีค่าใช้จ่ายและคำถามของฉันเกี่ยวกับการเอาชนะชั้นเรียนใน WP ดังนั้นฉันหวังว่ามันจะได้รับการพิจารณาที่เป็นธรรม

คำถามของฉัน: เมื่อมีการส่งอีเมลคำสั่งซื้อที่เสร็จสมบูรณ์ไปยังลูกค้าฉันต้องได้รับอีเมลนี้เป็นคำต่อคำและโดยอัตโนมัติเหมือนกับที่ส่งให้ลูกค้ามากกว่ารูปแบบอื่น ๆ เช่นใบแจ้งหนี้ PDF ที่สร้างขึ้น ปลั๊กอินสำหรับ WooCommerce ฉันสามารถทำได้โดยการเปลี่ยนบรรทัดต่อไปนี้ใน/woocommerce/classes/emails/class-wc-email-customer-completed-order.php:

$this->send( $this->get_recipient(), $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() );

อ่าน:

$this->send( $this->get_recipient(), $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() );
$this->send( me@myemail.com, $this->get_subject(), $this->get_content(), $this->get_headers(), $this->get_attachments() );

อย่างไรก็ตามเห็นได้ชัดว่าแฮ็คแบบนี้จะไม่รอดจากการอัพเกรด ฉันมีธีมลูกซึ่งแทนที่แม่แบบ WooCommerce มีกลไกที่เทียบเท่าซึ่งฉันสามารถแทนที่ชั้นเรียนในทางที่ห่อหุ้มในทำนองเดียวกัน? หรือคุณสามารถแนะนำวิธีอื่น (นอกเหนือจากการตั้งค่าเซิร์ฟเวอร์ SMTP เป็นสำเนาลับถึงอีเมลทั้งหมดไปยังที่อยู่ที่สอง) เพื่อให้งานเฉพาะของฉันในการรับอีเมลนี้เมื่อลูกค้าได้รับ


ฉันเคยใช้ gmail / google เป็นเซิร์ฟเวอร์ smtp มาก่อนและมันทำให้อีเมลทั้งหมดในโฟลเดอร์ที่ส่งมา ... (สำหรับสิ่งที่คุ้มค่าในกรณีของคุณ)
35445 Ewout

คำตอบ:


22

จริงๆแล้วมีตัวกรองที่คุณสามารถใช้ดูabstract-wc-email.phpบรรทัด 214:

return apply_filters( 'woocommerce_email_recipient_' . $this->id, $this->recipient, $this->object );

คุณสามารถใส่สิ่งต่อไปนี้ในฟังก์ชั่นของคุณ php:

add_filter( 'woocommerce_email_recipient_customer_completed_order', 'your_email_recipient_filter_function', 10, 2);

function your_email_recipient_filter_function($recipient, $object) {
    $recipient = $recipient . ', me@myemail.com';
    return $recipient;
}

ข้อเสียเปรียบเพียงอย่างเดียวคือผู้รับจะเห็นทั้งที่อยู่และของคุณเองในฟิลด์ถึง:


อีกวิธีหนึ่งคือสร้างคำตอบของสตีฟคุณสามารถใช้woocommerce_email_headersตัวกรอง $ object pass ช่วยให้คุณสามารถใช้สิ่งนี้กับอีเมลคำสั่งซื้อที่เสร็จสมบูรณ์แล้ว:

add_filter( 'woocommerce_email_headers', 'mycustom_headers_filter_function', 10, 2);

function mycustom_headers_filter_function( $headers, $object ) {
    if ($object == 'customer_completed_order') {
        $headers .= 'BCC: My name <my@email.com>' . "\r\n";
    }

    return $headers;
}

สิ่งนี้ดูมีแนวโน้มมาก คำแนะนำของคุณในการสร้างปลั๊กอินสำหรับฟังก์ชั่นนี้หรือไม่?
Halle

อัปเดตคำตอบ!
Ewout

มันใช้งานได้ดีมากขอบคุณมาก สิ่งนี้เหนือกว่ามากจริงๆ
Halle

รหัสด้านล่าง "อีกวิธีหนึ่งคือการสร้างคำตอบของ Steve ... " ดูเหมือนจะไม่ทำงานกับ WC 2.3 ... ข้อเสนอแนะใด ๆ
drake035

รหัสไม่ทำงานใน WC 2.5.5 คุณรู้หรือไม่ว่าพวกเขาเปลี่ยนชื่อของตัวกรองหรือไม่ ขอบคุณ!
Jaypee

9

และมีตัวกรองอื่นที่จะให้คุณเข้าถึงตัวแปร $ header ซึ่งสามารถอนุญาตให้คุณใช้ BCC อีเมลของคุณเพื่อให้คุณได้รับสำเนาของอีเมลทุกฉบับที่ส่งถึงลูกค้าของคุณบน Woocommerce นี่เป็นเรื่องง่ายเหมือนรหัสข้างบนยกเว้นลูกค้าของคุณจะไม่เห็นที่อยู่อีเมลของคุณ

เช่นเดียวกับวิธีแก้ไขปัญหาข้างต้นคุณจะต้องเพิ่มรหัสต่อไปนี้:

add_filter( 'woocommerce_email_headers', 'mycustom_headers_filter_function', 10, 2);

function mycustom_headers_filter_function($headers, $object) {
    $headers = array();
    $headers[] = 'Bcc: your name <me@myemail.com>';
    $headers[] = 'Content-Type: text/html';
    return $headers;
}

ตัวกรองนี้ใช้กับส่วนหัว $ ทั้งหมดและพิมพ์รหัสเป็นข้อความ / html อย่างหนัก โปรดทราบว่าคุณไม่ได้รวม '/ r / n' ในการประกาศประเภทเนื้อหา - ซึ่งอาจทำให้เกิดข้อผิดพลาดใน wp_mail () - ซึ่งเป็นสิ่งที่ Woocommerce ใช้ในการส่งข้อความของคุณ

ฉันใช้รหัสนี้เพื่อตรวจสอบว่า Woocommerce v2.0.14 ควรทำงานในเวอร์ชันก่อนหน้า แต่ไม่แน่ใจว่ารวมตัวกรองไว้นานเท่าใด


ทำไมไม่ใช้ / r / n? ฉันคิดว่าข้อผิดพลาดเกิดขึ้นเมื่อคุณเพิ่ม / r / n ในอาร์เรย์ของส่วนหัวเท่านั้น ตัวอย่างของคุณเขียนทับการตั้งค่าเนื้อหาซึ่งคุณสามารถนำมาใช้ซ้ำได้
2557

2
ฉันตอบกลับด้วยSOด้วยวิธีการที่จะเพิ่ม BCC ไปยังอีเมลที่เฉพาะเจาะจงและเพื่อรักษาส่วนหัวที่มีอยู่
helgatheviking
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.