寻找邮件发送插件的建议

时间:2013-05-23 作者:Dan Mooray

我想写一个Wordpress插件,每天为新注册的用户发送一封电子邮件,持续7天,但我不知道如何开始。

我的计划是:

钩住注册功能,在用户注册后发送第一封电子邮件,将一些用户详细信息发送到自定义表中(目前列只是用户id和一个带有发送电子邮件数量的计数器)

使用每24小时运行一次的cron脚本,从该表中获取数据,如果需要,发送电子邮件并增加计数器

有没有更好的方法来解决这个问题?

1 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

这里不需要自定义表-您可以使用用户元数据表和API.

然后创建一个WP Cron作业,每24小时运行一次(如果你有妄想症,可以更频繁地运行)。在回调中,使用以下内容查询在过去7天内注册的用户:

/*
 * 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(\'Y-m-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(\'Y-m-d H:i:s\');

    $end_dt = new DateTime($end.\' 23:59:59\');
    $e = $end_dt->format(\'Y-m-d 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;
 }
最后循环浏览它们,并在需要时发送电子邮件(适当地使用和更新用户的meta)。

结束

相关推荐

COMMENT_EMAIL挂钩似乎不适用于评论编辑字段

我正在构建一个插件,允许用户对其用户的IP/电子邮件数据进行PPK加密。因此,IP/电子邮件数据被设置为注释表中的伪值,加密值存储在相应的元字段中。我正在成功使用comment_email 钩住从我的加密元值在管理注释浏览器中查找电子邮件地址。在管理界面中编辑注释时Author 框电子邮件字段前面是标签“电子邮件(发送电子邮件)”,括号中的文本超链接到电子邮件地址。我的钩子在那里运行正常,从注释元数据中检索加密的电子邮件地址,并在返回之前对其进行解密。但是,在编辑字段本身中wp_comments.comm