Notifications Woocommerce发送电子邮件通知到Shipping字段中的不同电子邮件地址
我正在努力实现以下目标 我想送一个woocommerce产品作为礼物送给我的朋友或兄弟或类似的人。要实现这一点,我将依赖于签出页面中的“ShipToDifferential Address”字段。因此,如果任何人想将该产品作为礼物发送,那么他或她可以将该产品发送到另一个发货地址,即礼品接收人地址 为此,我修改了结帐页面,在“发送到不同地址”部分添加了一个电子邮件字段 现在我想要的是,我想向礼品接收者发送一封关于订单的电子邮件通知,以便接收者知道有人将此产品赠给了他 如何将订单的电子邮件通知发送到礼品接收人的电子邮件地址Notifications Woocommerce发送电子邮件通知到Shipping字段中的不同电子邮件地址,notifications,woocommerce,Notifications,Woocommerce,我正在努力实现以下目标 我想送一个woocommerce产品作为礼物送给我的朋友或兄弟或类似的人。要实现这一点,我将依赖于签出页面中的“ShipToDifferential Address”字段。因此,如果任何人想将该产品作为礼物发送,那么他或她可以将该产品发送到另一个发货地址,即礼品接收人地址 为此,我修改了结帐页面,在“发送到不同地址”部分添加了一个电子邮件字段 现在我想要的是,我想向礼品接收者发送一封关于订单的电子邮件通知,以便接收者知道有人将此产品赠给了他 如何将订单的电子邮件通知发送到
谢谢这是我写的一个插件,用于添加邮件。它应该可以工作,但我写了一段时间,所以没有保证
<?php
/*
Plugin Name: WooCommerce Shipping Email
Plugin URI: http://www.kathyisawesome.com/
Description: Add a shipping email field to checkout and notify of new orders
Version: 1.0
Author: Kathy Darling
Author URI: http://kathyisawesome.com
Requires at least: 4.0
Tested up to: 4.0
Copyright: © 2014 Kathy Darling.
License: GNU General Public License v3.0
License URI: http://www.gnu.org/licenses/gpl-3.0.html
*/
/**
* The Main WC_Shipping_Email class
**/
if ( ! class_exists( 'WC_Shipping_Email' ) ) :
class WC_Shipping_Email {
/**
* @var WC_Shipping_Email - the single instance of the class
* @since 1.0
*/
protected static $_instance = null;
/**
* Main WC_Shipping_Email Instance
*
* Ensures only one instance of WC_Shipping_Email is loaded or can be loaded.
*
* @static
* @see WC_Shipping_Email()
* @return WC_Shipping_Email - Main instance
* @since 1.0
*/
public static function instance() {
if ( is_null( self::$_instance ) ) {
self::$_instance = new self();
}
return self::$_instance;
}
/**
* Cloning is forbidden.
*
* @since 1.0
*/
public function __clone() {
_doing_it_wrong( __FUNCTION__, __( 'Cheatin’ huh?', 'woocommerce-mix-and-match' ), '2.0' );
}
/**
* Unserializing instances of this class is forbidden.
*
* @since 1.0
*/
public function __wakeup() {
_doing_it_wrong( __FUNCTION__, __( 'Cheatin’ huh?', 'mix-and-match' ), '2.0' );
}
/**
* WC_Shipping_Email Constructor
*
* @access public
* @return WC_Shipping_Email
* @since 1.0
*/
public function __construct() {
$this->id = 'email';
$this->meta = '_shipping_email';
$this->label = __( 'Shipping Email', 'woocommerce-shipping-email' );
// add email field to checkout
add_filter( 'woocommerce_shipping_fields' , array( $this, 'add_shipping_fields' ) );
add_filter( 'woocommerce_admin_shipping_fields' , array( $this, 'admin_shipping_fields' ) );
// add recipient to specific emails
add_filter( 'woocommerce_email_recipient_customer_processing_order' , array( $this, 'add_recipient' ), 20, 2 );
add_filter( 'woocommerce_email_recipient_customer_completed_order' , array( $this, 'add_recipient' ), 20, 2 );
add_filter( 'woocommerce_email_recipient_customer_note' , array( $this, 'add_recipient' ), 20, 2 );
// display meta key in order overview
add_action( 'woocommerce_order_details_after_customer_details' , array( $this, 'after_customer_details' ) );
// display meta key in email
add_action( 'woocommerce_before_template_part' , array( $this, 'before_email_addresses' ), 10, 4 );
}
/*-----------------------------------------------------------------------------------*/
/* Plugin Functions */
/*-----------------------------------------------------------------------------------*/
/**
* Add email to front-end shipping fields
*
* @var array $fields
* @return array
* @since 1.0
*/
function add_shipping_fields( $fields ) {
$fields['shipping_' . $this->id] = array(
'label' => $this->label,
'required' => true,
'class' => array( 'form-row-first' ),
'validate' => array( 'email' ),
);
return $fields;
}
/**
* Add email to Admin Order overview
*
* @var array $fields
* @return array
* @since 1.0
*/
function admin_shipping_fields( $fields ) {
$fields[$this->id] = array(
'label' => $this->label
);
return $fields;
}
/**
* Add recipient to emails
*
* @var mixed $email
* @return mixed
* @since 1.0
*/
function add_recipient( $email, $order ) {
$additional_email = get_post_meta( $order->id, $this->meta, true );
if( $additional_email && is_email( $additional_email )){
$email = explode( ',', $email );
array_push( $email, $additional_email );
}
return $email;
}
/**
* Display meta in my-account area Order overview
*
* @var object $order
* @return null
* @since 1.0
*/
public function after_customer_details( $order ){
$value = get_post_meta( $order->id, $this->meta, true );
if( $value ){
echo '<dt>' . $this->label . ':</dt><dd>' . $value . '</dd>';
}
}
/**
* Display meta in my-account area Order overview
*
* @var array $fields
* @return array
* @since 1.0
*/
public function before_email_addresses( $template_name, $template_path, $located, $args ){
if( $template_name == 'emails/email-addresses.php' && isset( $args['order' ] ) && ( $value = get_post_meta( $args['order']->id, $this->meta, true ) ) ){
if ( isset( $args['plain_text'] ) && $args['plain_text'] ){
echo $this->label . ': ' . $value . "\n";
} else {
echo '<p><strong>' . $this->label . ':</strong> ' . $value . '</p>';
}
}
}
} //end class: do not remove or there will be no more guacamole for you
endif; // end class_exists check
/**
* Returns the main instance of WC_Shipping_Email to prevent the need to use globals.
*
* @since 2.0
* @return WooCommerce
*/
function WC_Shipping_Email() {
return WC_Shipping_Email::instance();
}
// Launch the whole plugin
WC_Shipping_Email();
实际上我不需要再去做了。但我认为这个插件将为你们在结帐领域做你们想做的一切。这就是我需要的
谢谢大家的努力我需要“发送到不同地址表单”中的此电子邮件字段。请查看此截图并在截图中发表评论。我不理解你的评论。在我的屏幕截图中,您可以看到Shipping Email字段添加在“ship to a different address”列下。它应该向该电子邮件发送订单通知。有什么问题吗?实际上我不需要再这样做了,所以我要离开了。但是为了您的理解,我需要第二个电子邮件地址,在那里订单通知可以与主通知一起发送嗯,这正是我在代码中提供的。它在shipping address区域中添加一个额外字段,然后向该地址发送特定电子邮件。你有没有试过这个代码?我试过你的代码,但是它只向账单邮件发送通知。我认为这个插件不会向新添加的邮件字段发送邮件通知。至少在销售文本中没有提到。因此,当它没有被确认能按书面形式解决问题时,将其标记为答案是一种糟糕的形式。