2012-11-09 110 views
0

我有一个客户希望我建立,我可以用wp_mail,但我想知道它应该如何建立是不可能的 - 没有他们不想使用第三方网站或软件。WordPress的电子邮件,自定义帖子类型和电子邮件订阅

基本上是一个小部件将在客户的电子邮件地址,这个我们可以:

有某种接口,所以我们可以说,送出5,10,类X,Y,15个员额X在每日,每周或每月的基础上

这不难,但问题是:我将如何存储电子邮件进来?一个新的专栏?

使用这些电子邮件和自定义帖子类型来创建电子邮件模板,新闻简报等,可以在指定的时间发送到一组电子邮件(在这种情况下,所有电子邮件现在存储)。

这一个也不难,它的自定义帖子类型的一部分,我将如何创建一个自定义帖子类型,当一个帖子发布帖子未发布的方式是一个帖子或一个页面。而是像其中一样存储,但我可以在电子邮件正文中使用它的内容,而不是像邮寄或页面那样显示它。

基本上我不应该能去: site.come/email_templates/POST_ID

所以,第二个是一个比较复杂一点,但我想知道如何你们可能会接近这一情况或想法。

回答

1

以下是关于电子邮件订阅部分的一些想法。至于自定义帖子类型 - 我没有太多的经验,对不起:)

如果你想要一个快速和简单的电子邮件订阅解决方案,创建一个wp选项(见http://codex.wordpress.org/Function_Reference/add_option),本质上将类别映射到表中的键的哈希表。

对于散列表中的每个类别,存储订阅该类别的用户的用户ID和/或电子邮件数组。

一旦你有了这个数据结构,就可以很容易地操作和使用wp_mail。下面是我为我的插件之一写了一些示例代码:

 $subscribers = get_option('subscribers'); 
     $categories = get_the_category($post->ID); 

     if(!empty($categories) && !empty($subscribers)){ 
      $emails = array(); 
      //Go through each category and accumulate the necessary e-mail addresses 
      foreach($categories as $category){ 
       $catID = $category->term_id; 
       if(!empty($subscribers[$catID])){ 
        foreach($subscribers[$catID] as $userID => $trash){ 
         $user  = get_userdata($userID); 
         $userEmail = array($userID => $user->user_email); 
         if(!in_array($userEmail, $emails)){ 
          $emails = $emails + $userEmail; 
          //you can use something like implode(", ", $emails) 
          //in the Bcc: part when you send out the e-mail. 
         } 
        } 
       } 
      } 
     } 

需要注意以下几点:

  • 这是一个快速和肮脏的解决方案。如果类别数量和用户数量增长很大,您最好在数据库中创建一个表格并保持该表格
  • 确保考虑类别被删除时的情况(例如,删除类别时挂钩到操作中)和
  • 哈希表的方法效果很好假设类别不会被删除/常

好运气如何加入会影响您的数据结构!