根据用户的喜好在发布新帖子时通知用户

时间:2012-12-18 作者:Richard

我已经在我的WordPress网站上整理了一份自定义注册表,注册表上的一个项目是能够选择兴趣。

基本上,我有注册表中的以下代码。。。

 update_usermeta( $user_id, \'interests\', $_POST[\'interests\'] );
我需要一个这样的代码,如果“interests”与新帖子的“tag”匹配,则向用户发送电子邮件。

有可能吗?提前感谢您!

2 个回复
最合适的回答,由SO网友:bueltge 整理而成

请参见question 19259.

函数在发布帖子时初始化,将挂钩更改为您的帖子类型或在默认情况下使用post - 钩publish_post. 在您发送签入函数之前,您的自定义用户元字段,如get_user_meta( $user_id, \'interests\', TRUE ); 并准备发送有关新帖子的信息。

可能是这个解决方案,但未经测试!

    add_action( \'publish_post\', \'fb_send_mail_about_new_post\' );
    function fb_send_mail_about_new_post( $post_id = FALSE ) {

        // check user meta data, if interest
        $interests = FALSE;
        $interests = get_user_meta( get_current_user_id(), \'interests\', TRUE );
        if ( ! $interests )
            return NULL;

        if ( $post_id ) {
            // get data from current post
            $post_data = get_post( $post_id );
            //var_dump($post_data);exit; <-- see this for all content or use the id for get the revisons

            // get mail from author
            $user_mail = get_userdata( $post_data -> post_author );

            // email addresses
            $to = get_user_meta( get_current_user_id(), \'email\', TRUE );
            // email subject
            $subject = get_option( \'blogname\' ) . \': \' . $post_data -> post_title;
            // message content
            $message = $post_data->post_content . \' \' . PHP_EOL . 
                get_author_name( $post_data->post_author ) . \' \' . PHP_EOL . 
                get_permalink( $post_id );
            // create header data
            $headers = \'From: \' . 
                get_author_name( $post_data -> post_author ) . 
                \' (\' . get_option( \'blogname\' ) . \')\' . 
                \' <\' . $user_mail -> user_email . \'>\' . 
                PHP_EOL;
            // send mail
            wp_mail( 
                $to,
                $subject, 
                $message,
                $headers
            );
        }

        return $post_id;
    }
另一种方法是使用一个插件并保留很多时间,就像这个免费插件一样Inform about Content.该插件在用户配置文件中添加了两个字段,用于通过邮件更新帖子和评论。您可以使用自定义插件增强注册站点,以便新用户填写此字段。

SO网友:Brooke.

为什么要重新发明轮子?你应该能够wp_update_user 然后通过一个插件添加/删除用户的电子邮件,如subscribe2 基于该字段的值。

如果您想要更定制的解决方案,可以创建自己的插件并执行以下操作:

    class emailer {
  function send($post_ID)  {
    $friends = \'[email protected],[email protected]\';
    mail($friends,"sally\'s blog updated",\'I just put something on my blog: http://blog.example.com\');
    return $post_ID;
  }
}
$myEmailClass = new emailer();
add_action(\'publish_post\', array($myEmailClass, \'send\'));
它是从Plugin API

这将不得不用if语句和a进行修改,但除此之外,其他语句应该可以工作。不过,我建议您还是选择第一个选项。

结束

相关推荐

Functions.php:从博客中排除类别

所以很明显,如何从模板中排除某些类别,但我不想修改4个模板,使它们忽略某个类别。有没有一种方法可以将某个类别从阅读设置的“博客”集中排除?我正在将博客分配到名为“博客”的页面。。。但显然,档案和搜索也需要对这一超出类别的内容视而不见。我宁愿在里面做functions.php