WordPressで一括メール送信プラグインを作成

プラグインを自作
JISAKU-HP
JISAKU-HP

この記事では、ワードプレス管理画面から一括でメール送信できるプラグインをご紹介いたします。

一括メール送信プラグインの作成手順
  • step1
    MySQLデータベースにテーブルを作成

    MySQLデータベースにメーリングリストのデータを登録するテーブルを作成します。

  • step2
    メーリングリストの作成

    メーリングリストをエクセルで入力して、ワードプレスのcsv登録プラグインを利用してMySQLデータベースに登録します。

  • step3
    一括メール送信プラグインのインストール

    一括メール送信プラグインをコピペで作成して、インストールします。

MySQLデータベースにテーブルを作成

一括メール送信プラグインは、データベースに登録したメーリングリストのデータを利用して、ワードプレス管理画面からメールを一括送信できるプログラムです。

ワードプレスは、オープンソースソフトウェアであるMySQLというデータベース管理システムを使用しています。このデータベースにメーリングリストを登録していきます。

データベースに登録するのは、「phpMyAdmin」というPHPで実装されたMySQLの管理ツールを使って登録できますが、今回はプラグインをインストールして有効化するだけでテーブルが作成できます。ですので、phpMyaAdminでテーブルが作成できている確認するだけです。

プログラムのコードは後述しますので、まずはテーブルを作成するために下記からプラグインをダウンロードしてください。

ワードプレスの管理画面でプラグインの新規追加>プラグインのアップロードでインストールして有効化してください。

一括メール送信プラグインを有効化すると、MySQLデータベースにメーリングリスト用のテーブルが新しく作成されますので、phpMyAdminで確認しましょう。「エックスサーバー」や「さくらのレンタルサーバ」でWordPressサイトを作成されている方は、レンタルサーバーにログインして利用できます。

ログインしたphpMyAdminの画面では、ワードプレスのデータベースが作成されていてデータを登録していくテーブルが複数あるかと思います。ここに新しく「ワードプレスの接頭辞」+「mail_list」のテーブルが作成されているのを確認してください。

メーリングリストの作成

テーブルを作成できた後は、下記のcsvファイルをダウンロードして、メーリングリストのデータをエクセルなどを利用して入力します。

「mail_list.csv」をエクセルで開くと、1行目にメーリングリスト用のテーブルに対応したカラム名が入力されています。typeは種別で、nameは名前、mail_adはメールアドレスです。2行目以降にデータを入力していき保存してください。

作成したcsvファイルは、「csv登録プラグイン」でアップロードします。

メーリングリスト用のテーブルをワードプレスに認識させる

データが登録できましたが、MySQLで新しくテーブルを作成した場合は、ワードプレスに認識させるために、ワードプレスがインストールされているサーバー上のwp-contentフォルダー直下に下記のファイルを作成してアップロードしてください。

<?php
require_once( ABSPATH . WPINC . '/wp-db.php' );
class my_wpdb extends wpdb {
    var $tables = array( 'posts', 'comments', 'links', 'options', 'postmeta',
        'terms', 'term_taxonomy', 'term_relationships', 'termmeta', 'commentmeta' ,
        'mail_list');
}
if ( ! isset($wpdb) ) {
    $wpdb = new my_wpdb(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);
}
?>

6行目のmail_listがMySQLで作成した新しいテーブルです。それ以外は、元々読み込んでいるテーブルです。新しくテーブルを追加した場合は、このファイルの$tablesに配列で追記していけば反映されます。

一括メール送信プラグインの編集と再インストール

データの登録と新しいテーブルの認識ができましたので、いよいよプラグインの作成です。一括メール送信プラグインは2つのファイルで構成しています。コピペしてファイルを作成してください。

<?php
/**
* @package super_mail
* @version 1.0
*/
/*
Plugin Name: 一括メール
Plugin URI: https://jisaku-hp.jp/
Description: 
Author: 廣本 隆史
Version: 1.0
Author URI: https://jisaku-hp.jp/
*/
    global $wpdb;
    $table = $wpdb->prefix.'mail_list';
    //manshonテーブルが存在していなければ作成する
    if ($wpdb->get_var("SHOW TABLES LIKE '$table'") != $table) {

        $sql = "
            CREATE TABLE IF NOT EXISTS `$table` (
id int(10) unsigned AUTO_INCREMENT NOT NULL,
type varchar(255) NOT NULL,
name varchar(255) NOT NULL,
mail_ad varchar(255) NOT NULL,
PRIMARY KEY (id)
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
        ";

        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
        dbDelta( $sql );         
    }

function original_page100() {
add_menu_page('一括メール', '一括メール', 1, 'original_page100', 'csv100', '' ,201);
}
add_action('admin_menu', 'original_page100');

function csv100() {include 'mail.php';}
?>

「functions.php」の14行目から31行目のコードは、MySQLデータベースにメーリングリスト用のテーブルを作成するコードです。すでにテーブルがある場合は、上書きしたりはしません。

33行目から38行目のコードは、ワードプレス管理画面に「mail.php」を読み込んでいます。

<?php
$headers = "From:example@example.jp";
?>
<style>
textarea{display:block;}
</style>
<h2>一括メール送信</h2>
<form enctype="multipart/form-data" method="post">
<p>題名</p>
<input name="title" value="<?php echo get_option('super_title'); ?>">
<p>メール本文</p>
<textarea name="body" style="max-width:500px; width:90%; height:500px;"><?php echo get_option('super_mail'); ?></textarea>
<input type="submit" name="_update" value="更新">
<p>メール送信</p>
<select name="type" class="select">
<?php
global $wpdb;
$results = $wpdb->get_results("SELECT distinct type FROM $wpdb->mail_list");
foreach ($results as $value) {
    echo '<option value='.$value->type.'>'.$value->type.'</option>';
}
?>
</select>
<input type="submit" name="_send" value="送信">
<?php
if (isset($_POST['_update'])) {
$title = $_POST['title'];
$value = $_POST['body'];
update_option('super_title', $title);
update_option('super_mail', $value);
echo <<<EOF
<script>
    location.href='
EOF;
echo $_SERVER['REQUEST_URI'];
echo <<<EOF
';
</script>
EOF;
}
if (isset($_POST['_send'])) {
mb_language("Japanese");
mb_internal_encoding("UTF-8");
$type = $_POST['type'];
$title = get_option('super_title');
global $wpdb;
$results = $wpdb->get_results("SELECT * FROM $wpdb->mail_list WHERE type = '$type'");
foreach ($results as $value) {
$mes = $value->name." 御中\r\n\r\n";
$mes .= get_option('super_mail')."\r\n\r\n";
mb_send_mail($value->mail_ad, $title, $mes, $headers);
}
}
?>
</form>

mail.phpの2行目のコードは、メール送信者のアドレスです。From:以降を編集して下さい。

25行目から40行目のコードは、更新ボタンをクリックした時に題名と本文の内容をoptionsデータベーステーブルに登録または更新します。

41行目から53行目のコードは、送信ボタンをクリックすると、選択した種別のメーリングリストに題名と本文が一括でメール送信されます。

それでは、作成したプラグインをインストールしてみましょう。

プラグインのインストールファイルはzip形式になります。コピペで作成した「functions.php」と「mail.php」をフォルダ(フォルダ名称は任意です。)に入れて、フォルダーを右クリックで送る>圧縮(zip形式)フォルダーで圧縮してください。

ワードプレス管理画面>プラグインの新規追加でプラグインのアップロードをクリックしてください。圧縮したzipファイルを選択して、「今すぐインストール」でインストール開始します。

テーブル作成のために、先にインストールしているので、上書きインストールになります。

プラグインの使い方や、編集などでお困りの方は、お気軽に「LINE」や「お問い合わせページ」でお気軽にお問い合わせください。

タイトルとURLをコピーしました