Modificar plugin ALO EasyMail para que al importar usuarios registrados les envía un e-mail con un link de activación

Lo que necesitamos en este caso, es que al importar los usuarios registrados en el sitio usando el plugin ALO-EasyMail, se le envíe un correo con el link de activación al usuario, para que de esta forma el mimso decida si quiere o no recibir las Newsletter del sitio.

Por defecto al importar los usuarios registrados del sitio, los mismos son activados automáticamente y en este caso es lo que queremos cambiar y como el plugin no trae esta opción en la configuración tendremos que tocar el script.

Archivo a modificar: wp-content\plugins\alo-easymail\alo-easymail_subscribers.php

//Línea: 638
//Antes
if ( alo_em_add_subscriber( $fields, 1, "" ) == "OK" )
//Cambio
if ( alo_em_add_subscriber( $fields, 0, "" ) == "OK" )
//

Con este cambio el usuario no se activa al realizar la importación, por lo contrario, se le envía un e-mail (El e-mail por defecto que se usa para cuando un usuario se suscribe), indicando que debe activar su cuenta para completar la suscripción.

Modificando el plugin ALO EasyMail para hacerlo compatible con Membership Plugin

En este caso agregamos una funcionalidad para que al agendar una Newsletter nos permita elegir de la lista de usuarios registrados a cual de los diferentes usuarios vinculados a un Membership Levels enviar nuestra Newsletter.

El siguiente cambio es para que en nuestras Newsletter podamos enviarlas a los usuarios registrados, pero en este caso, filtrando por los diferentes Membership Levels; para esto debemos agregar el código presentado en esta página, para que el plugin ALO EasyMail sea “compatible” con el plugin “Membership”.

1.  Creamos las funciones para poder mostrar los diferentes Membership Levels en la página donde se registra una nueva Newsletter.

Archivo: /wp-content/plugins/alo-easymail/alo-easymail_functions.php

Agregar las siguientes funciones.


/**
 * Get all users Membership Levels of the blog
 * return object with info as in table column
 */
function alo_em_get_recipients_registered_membership_levels () {
	global $wpdb, $blog_id;
    if ( function_exists( 'get_users' ) ) { // For WP >= 3.1
    	$get_users = get_users();
   	}else { // For WP < 3.1
   		$get_users = get_users_of_blog();
   	}
   	$arr_levels = array();

   	for ( $i = 0; $i < count ($get_users); $i ++ ) { 			$user_object = new M_Membership($get_users[$i]->ID);
			$get_users[$i]->lang 	= $wpdb->get_var ( $wpdb->prepare( "SELECT lang FROM {$wpdb->prefix}easymail_subscribers WHERE email = %s", $get_users[$i]->user_email ) );
			$get_users[$i]->UID 	= $get_users[$i]->ID;
			$get_users[$i]->level = alo_em_get_membership_level_name($user_object->get_level_ids());
		}
//echo "
";print_r($get_users); echo "
";
		return $get_users;
}

function alo_em_add_item_to_array($item, &$arr_levels){
	if(empty($item)){
		if (!array_key_exists("UNKNOWN_LEVEL", $arr_levels)){
			$arr_levels["UNKNOWN_LEVEL"] = 1;
		}else{
			$arr_levels["UNKNOWN_LEVEL"] = $arr_levels["UNKNOWN_LEVEL"] + 1;
		}
	}else if (!array_key_exists($item, $arr_levels)) {
		$arr_levels[$item] = 1;
	}else{
		$arr_levels[$item] = $arr_levels[$item] +1;
	}
}

function alo_em_get_membership_level_name($levels){
	if(!empty($levels)){
	  foreach((array) $levels as $key => $value) {
	      $level = new M_Level ( $value->level_id );
	      if(!empty($level)) {
	      	$LevelName = $level->level_title();
	      }
	  }
	  return $LevelName;
	}else{
		return "UNKNOWN_LEVEL";
	}
}

function alo_em_validate_pl_membership_is_actived(){
	//Plugin que deseamos validar
	$validate_plugin = 'membership/membership.php';

	//Obtenemos todos los plugins activos
	$actived_plugins = get_option('active_plugins');

	// Comprobamos que el plugin está entre los activos.
	if ( in_array( $validate_plugin , $actived_plugins ) ) {
	 	// Activamos el booleano en caso de estar activo.
	 	return true;
	}else{
		return false;
	}
}

2.  Procedemos al agregado del código HTML para mostrar nuestra lista.

Sigue leyendo

Corrección a plugin ALO EasyMail para usar plugin WMPL con dominios diferentes

En este caso estamos usando el plugin WPML para manejo multi-idioma,  el mismo nos permite configurar diferentes nombres de dominio para cada idioma.

Cuando instalé el plugins para envío de Newsletter llamado ALO EasyMail y creo, el más practico del mercado y que mejor se adaptó a mis necesidades, detecte que no funcionaba en los dos dominios que tengo, uno para español y otro para ingles.

El problema radicaba en el uso que hace el plugins de Ajax y como Ajax no soporta cross domain para que el plugins funcione con dominios diferentes y sea compatible con las funcionalidades del Plugins de Internacionalización WMPL hay que hacer un cambio para no llamar a los script con URL absoluta.

El problema estaba en la llamada a la función para construir la Url del script Ajax. El cambio que hicimos hace que llame a la Url relativa y no a la Url absoluta del sitio.

Archivo modificado: /wp-content/plugins/alo-easymail/alo-easymail_functions.php

//En líneas 1084 y 1085
//Antes
var alo_em_sack = new sack("<?php echo admin_url() ?>admin-ajax.php");
//Corrección
var alo_em_sack = new sack("<?php echo get_bloginfo('url') ?>/wp-admin/admin-ajax.php");

//En líneas 1190 y 1191 - Estos cambios es sobre funciones JavaScript
//Antes
var alo_em_sack = new sack("<?php echo admin_url() ?>admin-ajax.php" );
//Corrección
var alo_em_sack = new sack("<?php get_bloginfo('url') ?>/wp-admin/admin-ajax.php" );

Cambiar correo remitente de notificaciones en WordPress

Hace un tiempo me pasa que las notificaciones de los nuevos comentarios en el Blog me llegan con un remitente del sistema, el cual yo no quiero usar, sino uno definido por mí mismo, por ejemplo (notifications@midominio.com). El correo que usa WordPress  sería el nombre de mi dominio principal+@+nombre-DNS, cosa que no me agrada.

Estuve buscando en la documentación de WordPress y en la configuración y no encontré la forma de cambiarlo por lo que me puse a buscar en la red y después de un largo rato de investigar encontré una forma de hacerlo modificando un script.

Entonces para cambiar en WordPress el correo remitente cuando envía e-mails de notificaciones al administrador o a los usuarios cuando se registran, solo bastaría con agregar al archivo functions.php del theme que estás usando el siguiente código.

//Archivo: /public_html/tudominio/wp-content/themes/nombre_theme/functions.php

function ChangeSenderMail ( ) {
     return 'cuenta@tudominio.com'; //Aquí pones el correo que quieras usar como remitente
}

function ChangeSenderName ( ) {
     return 'Administrador del Dominio';  //Aquí pones el nombre del remitente
}

add_filter('wp_mail_from','ChangeSenderMail');
add_filter('wp_mail_from_name','ChangeSenderName');

Recuerda que si cambias el theme deberías agregar este código en el nuevo.