主页/WordPress笔记/博客文章/综合文章/如何在 WordPress 中通过电子邮件添加文章

如何在 WordPress 中通过电子邮件添加文章

写 Bug工程师:

在WordPress中,您可以通过多种方式实现邮件订阅功能,以增加网站的互动性和用户参与度。下面我们将讨论一种常见的方法:通过WordPress插件自动向订阅者发送新文章的通知。

1. 安装和激活订阅插件

首先,您需要安装并激活一个订阅插件,比如“Subscribe to RSS”或“MailChimp Subscribe”。这里我们选择“Subscribe to RSS”。

示例代码:

// 插入以下代码到您的主题文件(如functions.php)中:

function my_custom_subscribe_rss() {
    if ( !is_admin() ) { // 确保非后台模式
        add_action('wp_head', 'my_custom_subscribe_rss_script');
    }
}
add_action( 'init', 'my_custom_subscribe_rss' );

function my_custom_subscribe_rss_script() {
    echo '<script type="text/javascript">'; 
    echo 'var url = "https://example.com/subscribe_to_feed";';
    echo 'document.write("<a href=""+url+"" rel="nofollow">Subscribe Now</a>");'; 
    echo '</script>';
}

这个简单的示例代码会在页面顶部插入一个指向订阅站点的链接,用户点击后会跳转到订阅页面。

2. 配置订阅插件

  • MailChimp Subscribe: 这个插件支持与MailChimp集成,只需输入您的MailChimp账户信息。
  • RSS订阅: 其他订阅插件可能需要手动设置URL。

3. 创建订阅页面

  • 在您的主题目录下创建一个新的文件subscribe_page.php,并添加以下代码来处理订阅请求:

    <?php
    function subscribe_form() {
      global $post;
      wp_nonce_field( basename(__FILE__), 'subscribe_form' );
      ?>
      <form action="<?php echo home_url('/'); ?>" method="post">
          <input type="email" name="email" placeholder="Enter your email address" required>
          <button type="submit">Subscribe</button>
      </form>
      <?php
    }
    
    add_shortcode('subscribe', 'subscribe_form');
    
    function send_new_article_email($atts) {
      extract(shortcode_atts(array(
          'title' => '',
          'content' => ''
      ), $atts));
    
      // 假设我们的文章标题和内容在这里
      $article_title = 'New Article Title Here';
      $article_content = 'This is the content of the new article.';
    
      $to = $_POST['email'];
      $subject = 'New Article Notification';
      $message = "<h2>$article_title</h2><p>$article_content</p>";
      $headers = array('Content-Type: text/html; charset=UTF-8');
    
      mail($to, $subject, $message, implode("rn", $headers));
      return '';
    }
    add_shortcode('new_article_notification', 'send_new_article_email');

4. 测试订阅流程

  • 访问您的网站并在订阅表单上填写邮箱地址。
  • 如果一切配置正确,当您收到新文章时,系统应该会自动发送一封邮件给您。

以上就是基本的邮件订阅流程,您可以根据实际需求调整代码和配置。记得定期更新您的订阅插件,确保它能够与最新的WordPress版本兼容。

黑板IDE教书匠:

在 WordPress 中,你可以使用邮件列表功能来向订阅了特定邮件列表的用户发送电子邮件。这通常被称为“添加文章”或“添加文章到邮件列表”。以下是如何实现这一目标的步骤:

1. 创建一个邮件列表

首先,你需要创建一个邮件列表。这是一个简单的例子,展示了如何创建一个名为“Newsletters”的新邮件列表。

<?php
/*
Plugin Name: Newsletter
Description: A simple newsletter plugin for WordPress.
Version: 1.0
Author: Your Name
*/
?>

然后,在 functions.php 文件中定义邮件列表和相关设置:

// Create a new email list
function create_newsletter() {
    $args = array(
        'name' => 'Newsletter',
        'description' => 'A simple newsletter plugin for WordPress.',
        'status' => 'active'
    );
    add_email_list($args);
}
add_action('init', 'create_newsletter');

// Add the email list to the WordPress database
function update_newsletter_status() {
    if (isset($_POST['newsletter_id']) && isset($_POST['newsletter_name'])) {
        $args = array(
            'id' => $_POST['newsletter_id'],
            'name' => sanitize_text_field($_POST['newsletter_name']),
            'status' => 'active',
            'updated' => true,
        );
        wp_update_email_list($args);
    }
}
add_action('wp_ajax_add_newsletter', 'update_newsletter_status');
add_action('wp_ajax_nopriv_add_newsletter', 'update_newsletter_status');

2. 添加文章到邮件列表

现在,你需要将文章添加到邮件列表中。假设你有一个包含文章标题、作者和正文的数组 $articles,你可以遍历这个数组并将其添加到邮件列表。

function send_articles_to_newsletter() {
    global $wpdb;

    // Prepare the SQL query to insert articles into the newsletter table
    $sql = "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value)
            VALUES (%d, 'title', %s), (%d, 'author', %s), (%d, 'content', %s)";

    foreach ($articles as $article) {
        $post_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_title = %s", $article['title']));
        $key = 'email:' . md5(uniqid(rand(), TRUE));
        $value = 'newsletter:' . $article['author'] . ':' . urlencode($article['content']);
        $wpdb->insert($wpdb->postmeta, $sql, array($post_id, 'title', $article['title'], 'author', $value));
    }
}

add_action('wp_insert_post', 'send_articles_to_newsletter');

示例代码

示例 1:创建邮件列表

function create_newsletter() {
    $args = array(
        'name' => 'Newsletter',
        'description' => 'A simple newsletter plugin for WordPress.',
        'status' => 'active'
    );
    add_email_list($args);
}
add_action('init', 'create_newsletter');

示例 2:更新邮件列表状态

function update_newsletter_status() {
    if (isset($_POST['newsletter_id']) && isset($_POST['newsletter_name'])) {
        $args = array(
            'id' => $_POST['newsletter_id'],
            'name' => sanitize_text_field($_POST['newsletter_name']),
            'status' => 'active',
            'updated' => true,
        );
        wp_update_email_list($args);
    }
}
add_action('wp_ajax_add_newsletter', 'update_newsletter_status');
add_action('wp_ajax_nopriv_add_newsletter', 'update_newsletter_status');

示例 3:发送文章到邮件列表

function send_articles_to_newsletter() {
    global $wpdb;

    // Prepare the SQL query to insert articles into the newsletter table
    $sql = "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value)
            VALUES (%d, 'title', %s), (%d, 'author', %s), (%d, 'content', %s)";
    foreach ($articles as $article) {
        $post_id = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_title = %s", $article['title']));
        $key = 'email:' . md5(uniqid(rand(), TRUE));
        $value = 'newsletter:' . $article['author'] . ':' . urlencode($article['content']);
        $wpdb->insert($wpdb->postmeta, $sql, array($post_id, 'title', $article['title'], 'author', $value));
    }
}
add_action('wp_insert_post', 'send_articles_to_newsletter');

这些代码片段展示了解决方案的基本架构,包括如何创建和管理邮件列表以及如何向邮件列表添加文章。根据具体需求调整这些代码以满足您的项目需求。