WordPress电子邮件,自定义帖子类型和电子邮件订阅

时间:2012-11-09 03:47:38

标签: wordpress email wordpress-theming custom-post-type

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

基本上,小部件将接收客户端电子邮件地址,我们可以:

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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

一旦你有了这个数据结构,就可以很容易地使用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.
                        }
                    }
                }
            }
        }

有些注意事项:

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