1

プラグイン mailjet-for-wordpress を使用しています。

私が欲しいもの

次のようにユーザーに nom、prenom、email をフロントエンドに入力してもらいたい: http://gyazo.com/b58675c671584f8edc6ab6d703370ba9

私の問題

nom ,prenom のように追加するだけのフィールドでは、ユーザーがサブスクライブするときに電子メール フィールドと同じように管理ページに表示されません。

私が試したこと

nom、prenom のような mailjet で連絡先プロパティ フィールドを作成しようとしました。また、ウィジェット「ニュースレターの購読」を変更しようとしています。ニュースレターフォームにフィールドを追加します。以下のようにコードを変更しました:

ファイル mailjet-widget.php

    // WIDGET CODE GOES HERE
    echo '
    <form class="subscribe-form">
        //add field nom
        <input type="text" name="nom" placeholder="' . __('Nom', 'wp-mailjet') . '" class="username">

        //add field prenom
        <input type="text" name="prenom" placeholder="' . __('Prenom', 'wp-mailjet') . '" class="username">
        //email it is original field in default newsletter mailjet form
        <input id="email" name="email" value="" type="email" placeholder="' . __('your@email.com', 'wp-mailjet') . '" />

        <input name="action" type="hidden" value="mailjet_subscribe_ajax_hook" />
        <input name="list_id" type="hidden" value="' . $list_id . '" />
        <input name="submit" type="submit" class="mailjet-subscribe" value="' . __($button_text) . '">
    </form>
    <div class="response">
    </div>';

また、この関数にも mailjet_subscribe_from_widget()

public function mailjet_subscribe_from_widget()
{
    // Get some variables - email, list_id, etc.
    $email = $_POST['email'];
    $list_id = $_POST['list_id'];
    //field add
    $nom = $_POST['nom'];
    $prenom = $_POST['prenom'];

    // Add the contact to the contact list
    $result = $this->api->addContact(array(
        'Email'     => $email,
        'Nom'       => $nom,
        'Prenom'    => $prenom,
        'ListID'    => $list_id
    ));

    // Check what is the response and display proper message
    if(isset($result->Status)) {
        if($result->Status == 'DUPLICATE'){
            echo '<p class="error">';
            echo sprintf(__("The contact %s is already subscribed", 'wp-mailjet'), $email);
            echo '</p>';
            die();
        }
        else if($result->Status == 'ERROR'){
            echo '<p class="error">';
            echo sprintf(__("Sorry %s we couldn't subscribe at this time", 'wp-mailjet'), $email);
            echo '</p>';
            die();
        }           
    }

    // Adding was successful
    echo '<p class="success">';
    echo sprintf(__("Thanks for subscribing with %s", 'wp-mailjet'), $email);
    echo '</p>';
    die();
}

このように数日間検索してテストしようとしましたが、まだ結果を得ることができません.プラグインmailjet-for-wordpressプラグインを初めて使用しています.誰かが解決策を見つけるのを手伝ってください.

よろしくお願いします。

4

1 に答える 1

0

2 つの API 呼び出しを追加することをお勧めします。

  1. 連絡先 ID を取得します GET https://api.mailjet.com/v3/REST/contact/user@email.com 次 のような応答を受け取るはずです
    「カウント」:1、
    "データ": [ {
        "CreatedAt": "2014-12-03T12:30:10Z",
        "DeliveredCount": 79,
        "メール": "user@email.com",
        「ID」:5、
        "IsOptInPending": false,
        "IsSpamComplaining": false,
        "LastActivityAt": "2015-04-07T08:35:51Z",
        "LastUpdateAt": "2014-12-03T12:30:10Z",
        "名前": ""、
        "UnsubscribedAt": "",
        "UnsubscribedBy": ""
    }]、
    「合計」: 1
  1. 次に、前の呼び出しの ID を使用して、連絡先のプロパティを更新する必要があります (この場合は ID=5)。

PUT https://api.mailjet.com/v3/REST/contactdata/5

        {
    "Data": [ {
    "Name": "nom",
    "Value": "Bond" 
    }, {
    "Name": "prenom",
    "Value": "James Bond" 
    }

応答には、更新されたデータを含む同じ Data オブジェクトが含まれます。

これら 2 つの API リクエストを WP プラグインに統合するには、さらに PHP メソッドを追加して作成する必要があります。

最初の API 呼び出しの例:

In mailjet-api-strategy.php
in class WP_Mailjet_Api add
public function     findContactByEmail($email) 

    {
      return $this->context->findContactByEmail($params);
    }

(assuming you are v3 user) in class WP_Mailjet_Api_Strategy_V3 add
public function findContactByEmail($email) 

        {
      return $this->{'contact/'.$email}(array(
        'method' => 'GET',
      ))
    }

mailjet_subscribe_widget() で連絡先 ID を取得します

 $result = $this->api->findContactByEmail(array(
'Email' => $email,

ここの ID は $result-Data[0]>ID にあります

2 回目の呼び出しについては、例を使用して統合してください。

于 2015-07-13T08:03:54.030 に答える