• 実現したいこと
    カスタム投稿タイプのメールテンプレートにシュートコードを入力すると、
    各ユーザーに配信するメール本文にユーザーの名前を出力できるようにしたいです。

    例)
    ショートコード [user_name]
    メールテンプレート(カスタム投稿) → 「[user_name]さん、こんにちは。」

    ユーザーA → 「ユーザーA」さんこんにちは。」
    ユーザーB → 「ユーザーB」さんこんにちは。」
    ユーザーC → 「ユーザーC」さんこんにちは。」

    イベント管理システムを構築しており、イベントを予約されたユーザーに対してメルマガ配信機能を構築しています。
    このようなユーザーの配列を取得し、foreachで出力しています。

    
    Array (
       [0] => Array (
          'user_id' => '1',
          'user_name' => 'foo',
          'user_email' => 'hoge@sample.com',
          'user_phone' => '090-1234-5678',
          'user_country' => 'JP',
          'user_postcode' => '000-0000',
          'user_address' => 'hogehoge',
       ),
      [1] => Array (
        'user_id' => '2',
        'user_name' => 'foo',
        'user_email' => 'hoge@sample.com',
          'user_phone' => '090-1234-5678',
          'user_country' => 'JP',
          'user_postcode' => '000-0000',
          'user_address' => 'hogehoge',
      )
    );
    
    
    function getUserName() {
    foreach($_POST['user_data'] as $user) {
    
    $user_name = $user['user_name'];
    
    }
    return $user['user_name'];
    }
    add_shortcode('code_user_full_name', 'getUserName');
    
    

    上記のようにショートコードを定義しましたが、最後のユーザー情報しか取得できず、
    ショートコードに返ってくるデータがforeachのループと連動しないのか、nullとなってしまいます。

    ショートコードの関数をループに連動する書き方、
    また、代替案があれば教えていただけると幸いです。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • こんにちは

    foreach に関しては、foreach の使い方を少し間違えていて、配列の最後の値しか取らないようになっています。

    それはさておき、このカスタム投稿のメールテンプレートなるものの使い方が良く分からないので、代替としてどのようにしたらいいのかもよく分からない感じです。

    メールを送信するトリガーは何(いつ)なのでしょうか?

    ショートコードにしているということは、その投稿を表示するたびに実行されるのだと思うのですが、合っていますでしょうか?
    一方で、$_POSTを読み込んでいるということは、サーバーに送信する操作があると思うのですが、送信するタイミングとショートコードが実行されるタイミングが異なるように思います。

    ショートコードは適していないのではないでしょうか。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「wp_mailで送信するメール本文に、ショートコードを使いたい」には新たに返信することはできません。