У меня было чертовски много времени, чтобы понять, как получить идентификатор заказа от 'woocommerce_email'
, и я не смог найти ответ на StackOverflow, поэтому я подумал, что могу поделиться тем, что сработало для меня.
Переопределение шаблонов — самый очевидный способ изменить содержимое электронной почты, но это испортило шаблоны электронной почты из других плагинов, таких как Smart Coupons.
Мне удалось программно удалить шаблон email_order_details.php из электронных писем, содержащих определенный продукт, например:
add_action( 'woocommerce_email', 'remove_woocommerce_email_order_details' );
// Using $object in function was key to remove_action below
function remove_woocommerce_email_order_details( $object ) {
// Simple way to get the order ID
$order_id = get_the_ID();
$order = new WC_Order( $order_id );
$items = $order->get_items();
foreach ( $items as $item ) {
// If product ID in order, remove order details
$product_id = $item['product_id'];
if ( $product_id == 1234 ) {
remove_action( 'woocommerce_email_order_details', array( $object, 'order_details' ), 10, 4 );
}
}
}
Теперь я снова добавил таблицу woocommerce_email_order_details
со своими данными.
add_filter( 'woocommerce_email_order_details', 'add_custom_email_order_details' );
function add_custom_email_order_details() {
// With these, you should be able access most elements in the 'woocommerce_email_order_details' table
$order_id = get_the_ID();
$order = new WC_Order( $order_id );
$order_type = $order->order_type;
$customer_id = $order->get_user_id();
$items = $order->get_items();
foreach ( $items as $item ) {
$product_id = $item['product_id'];
}
if( $product_id == 1234 ) {
echo "Order Type: " . $order_type;
echo "Customer ID: " . $customer_id;
echo "Product ID:" . $product_id;
}
}
Надеюсь, это поможет кому-то другому!
person
aleks1217
schedule
20.01.2019