Odpowiedzi:
Istnieje kilka wtyczek, które obsługują powiadomienia e-mail , ale wszystkie wydają się działać jako usługa subskrypcji dla (wszystkich) użytkowników WordPress.
Aby powiadomić tylko Ciebie o opublikowaniu posta lub strony:
/**
* Send an email notification to the administrator when a post is published.
*
* @param string $new_status
* @param string $old_status
* @param object $post
*/
function wpse_19040_notify_admin_on_publish( $new_status, $old_status, $post ) {
if ( $new_status !== 'publish' || $old_status === 'publish' )
return;
if ( ! $post_type = get_post_type_object( $post->post_type ) )
return;
// Recipient, in this case the administrator email
$emailto = get_option( 'admin_email' );
// Email subject, "New {post_type_label}"
$subject = 'New ' . $post_type->labels->singular_name;
// Email body
$message = 'View it: ' . get_permalink( $post->ID ) . "\nEdit it: " . get_edit_post_link( $post->ID );
wp_mail( $emailto, $subject, $message );
}
add_action( 'transition_post_status', 'wpse_19040_notify_admin_on_publish', 10, 3 );
Możesz upuścić to w swoim motywie functions.php
lub zapisać jako wtyczkę (co może być bardziej odpowiednie, ponieważ nie jest dokładnie związane z „motywem”).
sha - odpowiada na pytanie, przyczyniając się do wiedzy, że opublikowane rozwiązanie nie działa we wszystkich przypadkach.
Po 24 godzinach mogę zaktualizować swoją wiedzę. Rozwiązanie w tej lokalizacji ( Powiadom administratora, kiedy strona jest edytowana? ) Działa na serwerze, na którym rozwiązanie opisane powyżej nie działa. Aby zacytować z wątku rozwiązanie, które działa lepiej w dwóch kontekstach, próbowałem:
Oryginalny skrypt z wpcodex działa dobrze:
add_action( 'save_post', 'my_project_updated_send_email' );
function my_project_updated_send_email( $post_id ) {
//verify post is not a revision
if ( !wp_is_post_revision( $post_id ) ) {
$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 .= "<a href='". $post_url. "'>" .$post_title. "</a>\n\n";
//send email to admin
wp_mail( get_option( 'admin_email' ), $subject, $message );
}
}
Pewnie, będziesz musiał użyć odpowiedniego haka lub haczyków do zmiany statusu postu i wp_mail()
.
W katalogu wtyczek WordPress dostępna jest bardzo elastyczna wtyczka o nazwie „ Post Status Notifier ”.
Możesz zdefiniować własne reguły, kiedy powiadomienie powinno zostać wysłane. Możesz wybrać odbiorcę, DW, UDW, przed i po statusie. I możesz całkowicie dostosować tekst i temat (z symbolami zastępczymi).
Działa idealnie dla mnie!
Jeśli nie chcesz zhakować pliku funkcji motywu, użyj wtyczki takiej jak ta. Wysyła powiadomienia do administratora, gdy autor wysyła post do recenzji, oraz powiadomienia e-mail do autora, gdy post jest publikowany.
https://wordpress.org/plugins/wpsite-post-status-notifications/