我想写一个Wordpress插件,每天为新注册的用户发送一封电子邮件,持续7天,但我不知道如何开始。
我的计划是:
钩住注册功能,在用户注册后发送第一封电子邮件,将一些用户详细信息发送到自定义表中(目前列只是用户id和一个带有发送电子邮件数量的计数器)
使用每24小时运行一次的cron脚本,从该表中获取数据,如果需要,发送电子邮件并增加计数器
有没有更好的方法来解决这个问题?
我想写一个Wordpress插件,每天为新注册的用户发送一封电子邮件,持续7天,但我不知道如何开始。
我的计划是:
钩住注册功能,在用户注册后发送第一封电子邮件,将一些用户详细信息发送到自定义表中(目前列只是用户id和一个带有发送电子邮件数量的计数器)
使用每24小时运行一次的cron脚本,从该表中获取数据,如果需要,发送电子邮件并增加计数器
有没有更好的方法来解决这个问题?
这里不需要自定义表-您可以使用用户元数据表和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)。我正在构建一个插件,允许用户对其用户的IP/电子邮件数据进行PPK加密。因此,IP/电子邮件数据被设置为注释表中的伪值,加密值存储在相应的元字段中。我正在成功使用comment_email 钩住从我的加密元值在管理注释浏览器中查找电子邮件地址。在管理界面中编辑注释时Author 框电子邮件字段前面是标签“电子邮件(发送电子邮件)”,括号中的文本超链接到电子邮件地址。我的钩子在那里运行正常,从注释元数据中检索加密的电子邮件地址,并在返回之前对其进行解密。但是,在编辑字段本身中wp_comments.comm