0

我有客户想要我构建的东西,我可以使用 wp_mail,但我想知道它应该如何构建是否可行 - 不,他们不想使用第三方网站或软件。

本质上,一个小部件将接收客户的电子邮件地址,我们可以:

有某种界面,所以我们可以说每天、每周或每月发送 5、10、15 个类别 x、y、x 的帖子

这并不难,但问题是:我将如何存储传入的电子邮件?新专栏?

使用这些电子邮件和自定义帖子类型来创建可以在指定时间发送到一组电子邮件(在本例中为现在存储的所有电子邮件)的电子邮件模板、新闻通讯等。

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

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

所以第二个有点复杂,但我想知道你们如何处理这种情况或想法。

4

1 回答 1

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.
                        }
                    }
                }
            }
        }

需要注意的一些事项:

  • 这是一个快速而肮脏的解决方案。如果类别的数量和订阅者的数量增长很大,您最好在数据库中创建一个表并以这种方式维护它
  • 确保考虑删除类别时的情况(即在删除类别时挂钩操作)以及这将如何影响您的数据结构
  • 假设类别不经常删除/添加,哈希表方法效果很好

祝你好运!

于 2012-11-09T04:27:19.457 回答