Оповещения типа пользовательского сообщения

Я настраиваю настраиваемый тип сообщений, и все работает правильно. Пользователь может отправить на рассмотрение, и я вижу, что он находится в ожидании в области администратора. Как я могу отправить WordPress уведомление по электронной почте, когда пользователь отправляет сообщение?

add_action( 'init', 'artwork_feature'); function artwork_feature() { register_post_type( 'artwork', array( 'labels' => array( 'name' => __( 'Artwork' ), 'singular_name' => __( 'Artwork' ) ), 'public' => true, 'exclude_from_search' => false, 'capability_type' => 'artwork', 'supports' => array('custom-fields', 'comments'), 'capabilities' => array( 'publish_posts' => 'publish_artworks', 'edit_posts' => 'edit_artworks', 'edit_others_posts' => 'edit_others_artwork', 'delete_posts' => 'delete_artworks', 'delete_others_posts' => 'delete_others_artwork', 'read_private_posts' => 'read_private_artwork', 'edit_post' => 'edit_artwork', 'delete_post' => 'delete_artwork', 'read_post' => 'read_artwork', ), 'map_meta_cap' => true, 'has_archive' => true, 'supports' => array('title', 'editor', 'thumbnail') ) ); } 

Solutions Collecting From Web of "Оповещения типа пользовательского сообщения"

WordPress имеет hook_post , который является действием, инициируемым всякий раз, когда сообщение или страница создаются или обновляются.

Добавьте что-то вроде этого ниже к вашим функциям.php:

 function my_project_updated_send_email( $post_id ) { // If this is just a revision, don't send the email. if ( wp_is_post_revision( $post_id ) ) return; $post_title = get_the_title( $post_id ); $post_url = get_permalink( $post_id ); $subject = 'A post has been updated'; $message = "A post has been updated on your website:\n\n"; $message .= $post_title . ": " . $post_url; // Send email to admin. wp_mail( 'admin@example.com', $subject, $message ); } add_action( 'save_post', 'my_project_updated_send_email' ); 

Следует отметить, что ваш localhost по умолчанию не отправит электронное сообщение на внешний источник – если вы не настроили его. Однако есть несколько плагинов, которые позволят вам отправлять через SMTP, таким образом, вы можете легко протестировать с localhost.

Пример, приведенный выше, взят с страницы save_post codex, однако в дополнение к вышесказанному вы хотели бы добавить фильтры, чтобы отправлять их только для своего настраиваемого типа сообщений, а не для каждого сообщения, а также, возможно, только для нового создания, а не для все обновления (указывая, какой статус сообщения вы хотите получать) – решать вам.

Всего наилучшего,
Kat