web-dev-qa-db-ja.com

wp_remote_post用のフォームを作成する

私はwordpress codexからのコードを使っています:(これは一般的なバージョンです、私のコードはうまくいっています)

$response = wp_remote_post( $url, array(
    'method' => 'POST',
    'timeout' => 45,
    'redirection' => 5,
    'httpversion' => '1.0',
    'blocking' => true,
    'headers' => array(),
    'body' => array( 'name' => 'bob', 'email' => '[email protected]' ),
    'cookies' => array()
    )
);

if ( is_wp_error( $response ) ) {
   $error_message = $response->get_error_message();
   echo "Something went wrong: $error_message";
} else {
   echo 'Response:<pre>';
   print_r( $response );
   echo '</pre>';
}

私はユーザーが自分の名前とEメールアドレスを入力できるフォームを持っている方法を見つけようとしています。

だから基本的に私はボディエントリを動的にしたいです

私はこのような形を考えていました:

<form name="getUserInfo" action="NOT SURE WHAT GOES HERE" method="post">
  <input type="text" name="name" />
  <input type="email" name="email" />
  <input type="submit" name="submit" value="submit"/>
</form>

しかし、私はそれをコードに送る方法がわかりません

私はそれが私がこの行を変えるところでこの方法に沿っていると思います:

'body' => array( 'name' => 'bob', 'email' => '[email protected]' ),

'body' => array( 'name' => '$namefromform', 'email' => '$emailfromform' ),

私は何かが足りないのを知っていますが、よくわかりません。

一般的に言って、私はこれを私のニュースレターの登録をサイトのフッターにするためのウィジェットとして実行したいと思います。

誰もが私がこれのためにapiを必要とする理由を疑問に思っているなら、それは私がウェブサイトを作成するのを手伝っている会社がより大きな第三者連絡先管理システムにすべての連絡先を送るからです。

1
rudtek

私は自分が足りないものを見つけ出しました。一部の人にとっては単純なことかもしれませんが、他の人が同様の質問をする場合に備えて投稿する価値があります。フォームからの投稿情報を変数に設定してから、それらをwp_remote_postに割り当てました。

最初に特定の名前を追加するためにフォームを作り直しました。

<form name="getUserInfo" action="' . esc_url( $_SERVER['REQUEST_URI'] ) . '" method="post">
  <input type="text" name="name" />
  <input type="email" name="email" />
  <input type="submit" name="submit" value="submit"/>
</form>

それから私はフォームデータに基づいて変数を割り当てました。

    $name    = sanitize_text_field( $_POST["rt-name"] );
    $email   = sanitize_email( $_POST["rt-email"] );

それらは私の最初の質問でボディラインの代わりに追加されました:

'body' => array( 'name' => '$name', 'email' => '$email' ),

それから私は私のwp_remote_postの周りにif/thenステートメントを追加しました:

 if ( isset( $_POST['rt-submitted'] ) ) {  wp_remote_post here }

フォームからの投稿情報が存在する場合にのみ実行されるようにします。

完璧に動作します。

クレジットも一部この記事に行きます: ショートコードがうまくいかない

1
rudtek

フォームアクションを現在のページのURLにすることができます。ユーザーがフォームを送信すると、ページにPOSTパラメータが再ロードされます。その後、ウィジェットのコードで、それらのパラメータが存在するかどうかを確認します。もしそうなら、あなたはそれらをチェックしてからwp_remote_postでそれらを処理します。

個人的には私はこのようなものに重力フォームを使っています。 Gravityでフォームを作成してから、フォーム入力を処理するためのコードをgform_after_submissionフックに追加します。フォームライセンスの残りの部分を処理するので(ライセンスを購入できる場合)、これは簡単なオプションです。

1
Andreyu