• mamomo

    (@mamomo)


    ¿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)
  • Jose Lazo

    (@jose-lazo)

    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.

    Iniciador del debate mamomo

    (@mamomo)

    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?

    Jose Lazo

    (@jose-lazo)

    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.

    Iniciador del debate mamomo

    (@mamomo)

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

    Iniciador del debate mamomo

    (@mamomo)

    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.