2

Wordpress 用の Contact Form 7 プラグインでカスタム機能を実装するのに少し問題があります。

私がやりたいことはとても簡単です。問題の連絡先フォームは通常の連絡先問い合わせフォームであるため、通常の機能 (データの郵送) を維持する必要があります。ただし、送信者が連絡先の問い合わせをメールで送信するだけでなく、クライアントのメーリング リストに登録するかどうかを選択できるチェックボックスもフォームに用意しています。

クライアントは大量メール送信に Bronto を使用します (CC や Mailchimp と同様)。Bronto には「直接追加」機能 (詳細はこちら) があり、URL に必要なパラメーター (電子メール アドレス、購読するリストなど) を含む画像を埋め込むことで、Bronto アカウントに連絡先を追加するためのパラメーターを送信できます。

お問い合わせフォームのパラメーターを使用して画像の URL を作成することはできますが、実際に画像のリクエストを送信することは別の問題です。ここでは PHP と JS の両方で頭がいっぱいで、どのコースを受講すればよいかわかりません。

現在、wpcf7_before_send_mailCF7 に組み込まれている php フックを使用しています。これにより、フォーム データを収集して URL を作成できるようです。ただし、プラグインは AJAX を使用し、実際にはフォーム送信時に別のページにリダイレクトしないため、おそらくサーバーが何を認識していないため、どのような種類の php 出力 (echo、alert、さらには error_log) も正常に使用できないようです。に書き込むことになっています。

functions.php で:

add_action( 'wpcf7_before_send_mail', 'bronto_contact_add' );
function bronto_contact_add( $cf7 ) {
    $emailcf = $cf7->posted_data['email'];
    echo $emailcf;
}

これは、エコーが機能するかどうかを確認するための単なるテストです。機能しません。代わりに、フォームは送信時にハングアップするだけで、回転する読み込み gif が永久に表示されます。

私がする必要があるのは、cf7 オブジェクトのパラメーターを使用して画像の URL を作成し (これは問題ありません)、その画像要求を Bronto サーバーに送信することです (これは私が混乱している部分です)。これが送信時に別の php ページにリダイレクトされる通常のフォームである場合、これを行うのにまったく問題はありませんが、あまり知らない AJAX を使用しているため、今はかなり迷っています。

これを達成するための最良の方法がどのようになるかについて、誰かが光を当てるのを助けることができますか?

4

3 に答える 3

3

関数をアタッチした後でサブミットがハングしている場合、少なくともそれが影響していたことがわかります。私は Contact Forms 7 にあまり詳しくありませんが、これはおそらくエコーの適切な場所ではありません。私の推測では、バッファに書き込んでからリダイレクトを実行しようとしているためにハングしていると思われます (エラーログ)。の内容を見たい場合は$cf7、次のようにするのがよいでしょう:

// first option, using print_r()
error_log(print_r($cf7, true));

// second option, using var_dump() if you need the additional output
ob_start();                    // start buffer capture
var_dump($cf7);                // dump the values
$contents = ob_get_contents(); // put the buffer into a variable
ob_end_clean();                // end capture
error_log($contents);          // log contents of $cf7

変数の内容は$cf7PHP エラー ログに記録され、さまざまなコンポーネントへのアクセス方法が示されます。

于 2012-11-01T14:53:21.537 に答える
2

CF7 の同じ問題に対する同様の解決策を探しているときに、あなたのスレッドに出くわしました。CRM のバックエンドで自分のデータベースに情報を渡そうとすると、送信がハングします。

CF7 の統合に関連して、この問題に対する回答が Web 上のどこにも見当たりませんでした。そのため、私が見つけた問題とその修正方法をここに投稿することにしました。私はプロではありませんが、ソリューションはテストで機能します。誰かがこのソリューションに追加するものを持っている場合は、チャイムを鳴らしてください

基本的に、Wordpress を使用していて、CRM データベースに情報を渡そうとする場合、データベース テーブルが Wordpress サイト データベースと同じデータベース上にないと仮定します。次に、2 つのデータベース接続を同時に確立しようとしていますが、CRM に接続しようとすると、参照 ID が Wordpress データベースに再利用されます。これが、テスト中に送信が停止する根本的な原因であることがわかりました。

PHP 4 の非推奨コマンドで、PHP 5 でも機能する mysql_connect を使用しました。

mysql_connect('localhost', 'root', '', true);

4 番目のパラメーターとして「true」を渡すと、Wordpress サイトで実行中の接続とは別に接続を維持できます。これを行うと、CF7 送信はハングせず、CRM に送信され、同時に電子メールとして送信されます。問題ありません。

ただし、CRM データ送信の構文に何か問題がある場合 (変数の名前が間違っているなど)、ハングすることにも注意してください。「true」を渡してもうまくいかない場合は、まずコードをチェックして、問題がないことを確認してください。

これを読んでいる人が「mysqli」コマンドを使用してこれと同等の解決策を持っている場合、私はそれを知りたいと思います.mysqliを使用して試してみましたが、機能しませんでした.

于 2013-03-05T19:09:08.240 に答える
0

テーブル名にプレフィックスを付けて同じデータベースに追加できない理由はありますか? 古風で安全でないドライバーを使用するのではなく、それがより良い解決策であり、mysqli で正常に動作するようです.....

この場合、2 つのデータベースを使用する意味がわかりません。1 つを使用してみます。

于 2013-03-12T20:11:18.230 に答える