You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
130 lines
3.6 KiB
130 lines
3.6 KiB
<?php
|
|
/**
|
|
* Preview E-mails for WooCommerce.
|
|
*
|
|
* @package woodmart
|
|
*/
|
|
|
|
use XTS\WC_Wishlist\Ui;
|
|
|
|
if ( ! defined( 'WOO_PREVIEW_EMAILS_DIR' ) ) {
|
|
return;
|
|
}
|
|
|
|
if ( ! function_exists( 'woodmart_woo_preview_update_order' ) ) {
|
|
/**
|
|
* Update order.
|
|
*
|
|
* @param mixed $additional_data Additional data.
|
|
* @param string $index Email index.
|
|
* @param integer $order_id Order ID.
|
|
* @param object $current_email Emails data.
|
|
*
|
|
* @return bool|void
|
|
*/
|
|
function woodmart_woo_preview_update_order( $additional_data, $index, $order_id, $current_email ) {
|
|
$emails_list = array(
|
|
'woodmart_wishlist_back_in_stock',
|
|
'woodmart_wishlist_on_sale_products',
|
|
'woodmart_promotional_email',
|
|
);
|
|
|
|
if ( in_array( $index, $emails_list, true ) ) {
|
|
return true;
|
|
}
|
|
|
|
return $additional_data;
|
|
}
|
|
|
|
add_filter( 'woo_preview_additional_orderID', 'woodmart_woo_preview_update_order', 10, 4 );
|
|
}
|
|
|
|
if ( ! function_exists( 'woodmart_woo_preview_order_trigger' ) ) {
|
|
/**
|
|
* Trigger emails content.
|
|
*
|
|
* @param object $current_email Emails data.
|
|
* @param mixed $additional_data Additional data.
|
|
*
|
|
* @return void
|
|
*/
|
|
function woodmart_woo_preview_order_trigger( $current_email, $additional_data ) {
|
|
$user_id = get_current_user_id();
|
|
|
|
if ( 'woodmart_back_in_stock_email' === $current_email->id ) {
|
|
$products_back_in_stock = get_option( 'woodmart_wishlist_products_back_in_stock' );
|
|
|
|
if ( ! $products_back_in_stock || empty( $products_back_in_stock[ $user_id ] ) ) {
|
|
$args = array(
|
|
'posts_per_page' => 4,
|
|
'post_type' => 'product',
|
|
'orderby' => 'rand',
|
|
);
|
|
$query = new WP_Query( $args );
|
|
|
|
if ( ! isset( $query->posts ) ) {
|
|
return;
|
|
}
|
|
|
|
foreach ( $query->posts as $post ) {
|
|
$products_back_in_stock[ $user_id ][] = $post->ID;
|
|
}
|
|
}
|
|
|
|
do_action( 'woodmart_send_back_in_stock_mail', $user_id, $products_back_in_stock[ $user_id ] );
|
|
} elseif ( 'woodmart_on_sale_products_email' === $current_email->id ) {
|
|
$ui = Ui::get_instance();
|
|
$products_on_sales = array();
|
|
$product_ids_on_sale = wc_get_product_ids_on_sale();
|
|
|
|
if ( $ui->get_wishlist() ) {
|
|
$wishlist_products = $ui->get_wishlist()->get_all();
|
|
|
|
foreach ( $wishlist_products as $product_data ) {
|
|
if ( in_array( $product_data['product_id'], $product_ids_on_sale ) ) { //phpcs:ignore
|
|
$products_on_sales[ $product_data['product_id'] ] = $product_data['product_id'];
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( $products_on_sales ) {
|
|
$args = array(
|
|
'posts_per_page' => 4,
|
|
'post_type' => 'product',
|
|
'orderby' => 'rand',
|
|
);
|
|
$query = new WP_Query( $args );
|
|
|
|
if ( ! isset( $query->posts ) ) {
|
|
return;
|
|
}
|
|
|
|
foreach ( $query->posts as $post ) {
|
|
$products_on_sales[] = $post->ID;
|
|
}
|
|
}
|
|
|
|
do_action( 'woodmart_send_on_sale_products_mail', $user_id, $products_on_sales );
|
|
} elseif ( 'woodmart_promotional_email' === $current_email->id ) {
|
|
$products_for_promotion = array();
|
|
$args = array(
|
|
'posts_per_page' => 4,
|
|
'post_type' => 'product',
|
|
'orderby' => 'rand',
|
|
);
|
|
$query = new WP_Query( $args );
|
|
|
|
if ( ! isset( $query->posts ) ) {
|
|
return;
|
|
}
|
|
|
|
foreach ( $query->posts as $post ) {
|
|
$products_for_promotion[ $user_id ][] = $post->ID;
|
|
}
|
|
|
|
do_action( 'woodmart_send_promotional_mail', $user_id, $products_for_promotion[ $user_id ], '', '' );
|
|
}
|
|
}
|
|
|
|
add_action( 'woo_preview_additional_order_trigger', 'woodmart_woo_preview_order_trigger', 10, 2 );
|
|
}
|
|
|