Soporte » WordPress Avanzado » Reenvio de publicaciones

  • ¿Sabéis de algún plugin o como hacer que las publicaciones o post en wordpress se reenvíen automáticamente a los usuarios o tipo de perfiles que tenemos?

Viendo 5 respuestas - de la 1 a la 5 (de un total de 5)
  • Hola Mamomo,

    Si lo que quieres es enviar un email notificando a la lista de usuarios registrados como subscriptor, este código te puede servir:

    function send_mails_on_publish( $new_status, $old_status, $post ) {
        if ( 'publish' !== $new_status or 'publish' === $old_status
            or 'my_custom_type' !== get_post_type( $post ) )
            return;
        $subscribers = get_users( array ( 'role' => 'subscriber' ) );
        $emails      = array ();
        foreach ( $subscribers as $subscriber )
            $emails[] = $subscriber->user_email;
        $body = sprintf( 'Tenemos una nueva publicación para ti.
            Mira <%s>',
            get_permalink( $post )
        );
        wp_mail( $emails, '¡Nueva publicación en ' . bloginfo( 'name' ) . '!', $body );
    }
    add_action( 'transition_post_status', 'send_mails_on_publish', 10, 3 );

    Si lo quieres en plan plugin en vez de meter el código en el functions.php para poder desactivarlo cuando quieras, está en Github aquí.

    Un saludo.

    Primero lo he puesto manualmente, pero al ver que no funcionaba lo he puesto como plugin, pero nada…he probado de publicar varias cosas y no llega ningún correo…puede ser que ya no funcione?

    Tienes razón, había errores en el código y además el tipo de entrada que está en el mismo es «my_custom_type».

    Este es el código corregido y probado en WP 4.9:

    function send_mails_on_publish( $new_status, $old_status, $post ) {
        if ( ( 'publish' == $new_status && 'publish' !== $old_status ) && 'post' == $post->post_type ) {
    	    $subscribers = get_users( array ( 'role' => 'subscriber' ) );
    	    $emails      = array ();
    	    foreach ( $subscribers as $subscriber ) {
    	        $emails[] = $subscriber->user_email;
    		    $body = sprintf( 'Tenemos una nueva publicación para ti.
    		        Mira <%s>',
    		        get_permalink( $post )
    		    );
    		    // echo "Cuerpo: $body";
    		    wp_mail( $emails, '¡Nueva publicación en ' . get_bloginfo( 'name' ) . '!', $body );
    	   }//foreach
    	} //end if
    }
    add_action( 'transition_post_status', 'send_mails_on_publish', 10, 3 );

    En un ratillo lo subo a Git.

    Ahora si! Está genial… pero no se puede conseguir que envíe una copia exacta de la publicación?

    No se os ocurre ninguna manera?

Viendo 5 respuestas - de la 1 a la 5 (de un total de 5)
  • El debate ‘Reenvio de publicaciones’ está cerrado a nuevas respuestas.