Procurando conselhos para um e-mail que envia o plugin

Gostaria de escrever um plugin WordPress que envia um e-mail todos os dias por 7 dias para usuários recém-registrados, mas não tenho certeza de como começar.

Meu plano seria:

  • acertar a function de registro para enviar o primeiro e-mail após o usuário registrar, enviar detalhes de alguns usuários para uma tabela personalizada (por agora as colunas são apenas a identificação do usuário e um contador com o número de e-mails enviados)

  • use um script cron que é executado todas as 24h que receberia dados dessa tabela e, se necessário, envie os e-mails e incrementar esse contador

Existe uma maneira melhor de abordar isso?

Solutions Collecting From Web of "Procurando conselhos para um e-mail que envia o plugin"

Não há necessidade de uma tabela personalizada aqui – você pode usar a tabela de metadados do usuário e a API .

Em seguida, crie um trabalho WP-Cron para executar a cada 24 horas (ou mais freqüentemente se você for paranóico). Na consulta de devolução, os usuários que se registraram nos últimos 7 dias usando algo como:

/* * Get all users registered after $start and before $end (dates in yyyy-mm-dd format) * Based on my answer to this question: http://wordpress.stackexchange.com/questions/51485/how-can-i-query-all-users-who-registered-today/51492#51492 * @param (string) $start - start date in yyyy-mm-dd format * @param (string) $end - end date in yyyy-mm-dd format */ function wpse51485_get_users_registered($start='', $end='' ){ global $wpdb; if( empty($start) ) $date = date('Ym-d'); if ( empty($end) ) $end = $start; //Should probably validate input and throw up error. In any case, the following ensures the query is safe. $start_dt = new DateTime($start. ' 00:00:00'); $s = $start_dt->format('Ymd H:i:s'); $end_dt = new DateTime($end.' 23:59:59'); $e = $end_dt->format('Ymd H:i:s'); $sql = $wpdb->prepare("SELECT wp_users.* FROM wp_users WHERE 1=1 AND CAST(user_registered AS DATE) BETWEEN %s AND %s ORDER BY user_login ASC",$s,$e); $users = $wpdb->get_results($sql); return $users; } 

e, finalmente, encaminhe-os e envie um e-mail, se necessário (usando e atualizando adequadamente o meta do usuário).