WooCommerce создает новую запись, когда создаются новые заказы из shop_order
тип сообщения. Поэтому я хочу отправить уведомление по электронной почте о заказе с помощью WordPress save_post
действие крюк.
Я написал следующий код:
add_action( 'save_post', 'notify_shop_owner_new_order', 10, 3 );
function notify_shop_owner_new_order( $post_ID, $post ) {
if( $post->post_type == 'shop_order' ) {
$headers = 'From: foo <[email protected]>';
$to = '[email protected]';
$subject = sprintf( 'New Order Received' );
$message = sprintf ('Hello, musa ! Your have received a new order from .Check it out here :');
wp_mail( $to, $subject, $message, $headers );
}
}
Но это не работает.
И если я использую ниже, не проверяя тип сообщения, он работает:
add_action( 'save_post', 'notify_shop_owner_new_order', 10, 3 );
function notify_shop_owner_new_order( $post_ID, $post ) {
$headers = 'From: foo <[email protected]>';
$to = '[email protected]';
$subject = sprintf( 'New Order Received' );
$message = sprintf ('Hello, musa ! Your have received a new order from .Check it out here :');
wp_mail( $to, $subject, $message, $headers );
}
Я не понимаю, в чем проблема. Мне нужно использовать параметры функции $post
а также $post_id
чтобы получить ссылку на пост.
Любая помощь?
Спасибо
Сначала вам нужно получить объект $ post следующим образом:
add_action( 'save_post', 'notify_shop_owner_new_order', 1, 2 );
function notify_shop_owner_new_order( $post_ID ){
// Get the post object
$post = get_post( $post_ID );
if($post->post_type == 'shop_order') {
$headers = 'From: musa <[email protected]>';
$to = '[email protected]';
$subject = sprintf( 'New Order Received' );
$message = sprintf ('Hello, musa ! Your have received a new order from .Check it out here :');
wp_mail( $to, $subject, $message, $headers );
}
}
Код протестирован и работает…
Код помещается в файл function.php вашей активной дочерней темы (или темы). Или также в любом файле плагина php.
Подобный ответ: Добавление категории «Продажа» к продуктам, которые продаются с использованием "save_post" крюк
Других решений пока нет …