3

サイトの購読者に送信する電子メールがあります。これを行うには、データベースから購読者リストを取得し、配列をループして一度に 1 通の電子メールを送信します...一度にすべてを送信する方法があることは知っていますが、これが私がこの方法で行う理由です。助けが必要です...

HTML メールには 2 つのトークンが含まれています。

{name}{date}

私がする必要があるのは、{date}トークンを置き換える HTML 電子メールに日付を挿入し、{name}電子メール送信ごとに置き換える名前を挿入することです (名前は常に異なるため)。

これは私が持っているものです:

        $result = $wpdb->get_results( "SELECT * FROM wp_newsletter WHERE `id` IN ( $userIds )");
        for($i = 0, $size = sizeof($result); $i < $size; ++$i){
          add_filter('wp_mail_content_type',create_function('', 'return "text/html";'));
          $to .= $result[$i]->name.'<'.$result[$i]->email.'>';
          $mail = wp_mail( $to, $subject , $message, $headers);
        }

上記のように、データベースから 2 つの変数があります。

$result[$i]->name

$result[$i]->email

そして$message、置き換える必要がある 2 つのトークンを含む HTML メール本文です。

{name}そう....ループと送信のすべてが期待どおりに機能していますとのトークンを置き換える方法について助けが必要です{date}

これに関するヘルプは非常に高く評価されます。

4

2 に答える 2

2

str_replaceこれは、PHP の関数docs hereを使用して簡単に実行できます。

...
$message = str_replace('{name}', $result[$i]->name, $message);
$message = str_replace('{date}', date('Y/m/d H:i:s'), $message);  // Or your preferred date format

$mail = wp_mail( $to, $subject , $message, $headers);

{name}and/orのインスタンスが 1 つしかないことがわかっている場合は{date}、4 番目のパラメーター$countを に渡すことができstr_replace、最初の一致を置き換えた後に終了することに注意してください。

乾杯

于 2012-07-24T23:08:58.270 に答える
1
$message = str_replace('{name}',$result[$i]->name,$message);
$message = str_replace('{date}',date('Y/m/d H:i:s'),$message);

str_replace('{name}',$result[$i]->name);
str_replace('{date}',date('Y/m/d H:i:s'));
于 2012-07-24T23:02:39.350 に答える