Powiadomienie e-mail o zmianie dowolnego posta lub strony

11

Czy istnieje sposób, aby Wordpress wysyłał mi e-maile za każdym razem, gdy publikowana jest strona lub post?

GavinR
źródło

Odpowiedzi:

19

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.phplub zapisać jako wtyczkę (co może być bardziej odpowiednie, ponieważ nie jest dokładnie związane z „motywem”).

TheDeadMedic
źródło
3

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 ); 
   } 
} 
Doorwhey
źródło
-1

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!

MikeST
źródło
rekomendacje wtyczek są nie na temat. A rekomendowanie wtyczki bez pokazywania odpowiednich linii, które rozwiązują pytanie, jest uważane za niską jakość. Jeśli wtyczka zniknie, odpowiedź jest bezwartościowa, a witryna cierpi na zgniliznę linków.
kaiser
-1

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/

CreativeDev
źródło
2
Odpowiedzi powinny być czymś więcej niż zwykłymi linkami . Powinny one być odpowiedzią, a nie drogą, na której ktoś może znaleźć odpowiedź. Pomóż zapobiegać gniciu linków, edytuj swoją odpowiedź i podaj potrzebne informacje, które pomogą OP, a także późniejszym odwiedzającym rozwiązać ich problem.
kaiser
Myślę, że trochę to popełniłeś. Nigdy nie hakujesz pliku funkcji. Służy do wprowadzania zmian i wdrażania zaczepów.
Mike