WordPress メルマガ / Newsletter プラグインでお馴染みのSubscribe2。バージョンアップに手がかかりますが、、忘れずにカスタマイズすることをおさらいします。
無料版でもできることいっぱい!フィルターフックで使い方がさらに広がります。
【環境】
・WordPress 5.7.2
・PHP 7.4
・Subscribe2 10.35
- ユーザープロフィール画面の通知ON/OFF設定(※プラグイン要修正)
- 送信者メールアドレス
- カスタムポスト追加
- タクソノミ追加
- メールテンプレート
- HTMLメールのソースコード
- ウィジェットブロック Subscribe2 HTML
- Subscribe/Unsubscribeボタンテキストの変更
- 登録/登録解除確認メールの本文テンプレート
- 登録完了メッセージ
- 登録解除完了メッセージ
◎アップデート時は、上記1つ目と翻訳ファイルをセット(使い方によります)
◆ ユーザープロフィール画面の通知ON/OFF設定
バージョン9.x頃までは機能していたと思いますが、===で比較するように変更されてから、通知OFFからONにセットできなくなりました。次のようにソースコードを修正します。
※===は方比較するため、'1' にするか、==で比較するか、(int)で$_POSTをキャスト、で対応します。
subscribe2/classes/class-s2-admin.php 1147行目//変更前
if ( isset( $_POST['sub2-one-click-subscribe'] ) && 1 === $_POST['sub2-one-click-subscribe'] ) {
//変更後
if ( isset( $_POST['sub2-one-click-subscribe'] ) && '1' === $_POST['sub2-one-click-subscribe'] ) {
◆ 送信者メールアドレス
Settings画面で送信者(Send Email From:)をサイト管理者・登録ユーザー・投稿者から選択できます。
プラグインのインストール直後は、Subscribe2のオプション変数に「dismiss_sender_warning」が含まれておらず不調なため、一度、サイト管理者以外を選択して設定保存すること。→①
その後、改めて送信者(Send Email From:)を設定します。
送信メールドメインに注意
メールドメインがサイトドメイン(サブドメイン可)と異なる場合は、管理画面上部にエラーメッセージが表示されます。
①の設定保存をしていない場合は、メッセージは表示されません。
※SMTP送信プラグイン等の利用で、送信者Fromを一律変更していても、Subscribe2のロジックにより送信できません。
◆ カスタムポスト追加
カスタムポストを送信対象にする場合は、フィルターフックで追加します。
funcitons.php などadd_filter( 's2_post_types', function( $types ){
$types[] = 'recipe'; //カスタムポストをセット
return $types;
} );
※ブロックエディタ対応により、カスタムポスト編集画面にデフォルトで「Subscribe2 Sidebar」が追加されましたが、メール送信するには、このフィルターフックでの追加が必要です。
◆ タクソノミ追加
メール配信するか否かは、投稿に設定したカテゴリ(タクソノミ)により決まります。
デフォルトでは「カテゴリー」のみですので、タグや独自設置したタクソノミを対象にする場合は。フィルターフックで追加します。
functions.php などadd_filter( 's2_taxonomies', function( $taxonomies ){
$taxonomies[] = 'cookware'; //タクソノミをセット
return $taxonomies;
} );
◆ メールテンプレート
フィルターフックでセットできます。
※テンプレートはhtmlメールとテキストメールとも共通なので、どちらにも対応できるようコーディングすることがポイント。(テキストメールはタグが削除された状態になるので、空白行に注意)
add_filter( 's2_email_template', function( $mailtext ){
$mailtext = <<<EOD
<table><tr><td class="inner"><div class="contents">
...
</div></td></tr></table>
EOD;
return $mailtext;
} );
◆ HTMLメールのソースコード
HTMLメールのソースもフィルターフックを利用できます。
スタイルシートがコーディングしやすくなって◎。
add_filter( 's2_html_email', function( $html_email, $subject, $message ){
$html_email = <<<EOD
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional //EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>{$subject}</title>
<style>
...
</style>
</head>
<body>
{$message}
</body>
</html>
EOD;
return $html_email;
}, 10, 3 );
◆ ウィジェットブロック Subscribe2 HTML
ブロックエディタで、Subscribe2 HTMLブロックをセットできます。
ショートコード[ subscribe2 ]と同等です(ショートコードがセットされます)。
※undefinedになる場合は、一度Subscribe2 HTMLブロックの設定で何か保存してみましょう。
◆ Subscribe/Unsubscribeボタンテキストの変更
ボタンテキストを変更するフィルターフックs2_subscribe_button, s2_unsubscribe_buttonです。
functions.phpなどadd_filter( 's2_unsubscribe_button', function( $text ){
return "配信停止";
} );
add_filter( 's2_subscribe_button', function( $text ){
return "登録";
} );
◆ 登録/登録解除確認メールの本文テンプレート
Subscribe2フォームから送信される確認メールの本文は、フィルターフックs2_confirm_emailで変更できます。
登録と登録解除は、テンプレートキーワード{ACTION}で置換できます。
add_filter( 's2_confirm_email', function( $body ){
$body = <<<EOD
メールアドレスの{ACTION}を受け付けました。
{ACTION}の手続きを完了するためには、下記URLをクリックしてください。
{LINK}
※このメールにお心当たりのない方は、削除をお願いします。
---
{BLOGNAME}
{BLOGLINK}
EOD;
return $body;
} );
◆ 登録完了メッセージ
Subscribe2フォームから登録する際に送信される、登録確認メールの本文を変更するフィルターフックです。
add_filter( 's2_subscribe_confirmed', function( $message ){
$message .= <<<EOD
<p>ご登録ありがとうございます。.....</p>
EOD;
return $message;
} );
◆ 登録解除完了メッセージ
同様に、登録解除確認のメール本文を変更するフィルターフックです。
add_filter( 's2_unsubscribe_confirmed', function( $message ){
$message .= <<<EOD
<p>ご利用ありがとうございました。</p>
EOD;
return $message;
} );
その他
クラシックエディタご利用の場合は、以前の記事が参考になることがあるかもしれません。
参考
https://subscribe2.wordpress.com/
https://getwemail.io/docs/subscribe-2/
(非公開コメント)