web-dev-qa-db-ja.com

お問い合わせフォーム7は、getリクエストでフィールド値を設定します

Getリクエストでフィールド値を設定したい

example.com/subscribe/?email=asfafs

しかし、フォームが含まれているページをロードすると、フォームが表示されません。表示されなかった理由がわかります。フォーム自体がgetリクエストも送信できるためです。また、フィールド値を設定できる this プラグインもインストールしましたが、そうではありません。

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

<p>Uw naam (verplicht)<br />
    [text* input-name] </p>

<p>Uw email (verplicht)<br />
    [dynamictext dynamicname "CF7_GET key='email'"] </p>
<p>Onderwerp<br />
    [text your-subject] </p>

<p>Uw bericht<br />
    [textarea your-message] </p>

<p>[submit "Verzenden"]</p>

私のページ:

<?php echo do_shortcode('[contact-form-7 id="1062" title="Contactformulier 1"]'); ?>

これには別のプラグインを使用してもかまいません。自分のニーズに合うものがあれば教えてください。

9
Meneer Venus

リンクしたプラグインをインストールしてテストしました。プラグインは、Contact Form 7内のフィールドのGET変数を取得するためのものではありません。プラグインは2つのことを行います

  1. $ _GET変数を取得し、それを使用して非表示フィールドを作成します。
  2. ページ上に変数を表示します(フィールドではなくテキストとして)

あなたの例にあるショートコードはこれ http://wordpress.org/plugins/contact-form-7-dynamic-text-extension/ プラグインで使用するためのものです。そのプラグインもダウンロードしてテストしたところ、問題なく動作しているようです。

これは私がサンプルを作成したページです。 http://jtwebb.com/stackoverflow-question/?someemail=asdf 動的テキスト拡張プラグインで動作していることを確認したい場合。

[〜#〜] update [〜#〜]:これは私の連絡フォーム7のコードです:

<p>Your Name (required)<br />
    [text* your-name] </p>

<p>[showparam someemail] <-- this is the shortcode of show param, just text no field</p>

<p>[getparam someemail] If you inspect this you'll see a hidden get field with the value of 'someemail' in it.</p>

<p>Your Email (required)<br />
    [dynamictext* dynamictext-380 "CF7_GET key='someemail'"]<br>This field was created with <a href="http://wordpress.org/plugins/contact-form-7-dynamic-text-extension/">http://wordpress.org/plugins/contact-form-7-dynamic-text-extension/</a></p>

<p>Subject<br />
    [text your-subject] </p>

<p>Your Message<br />
    [textarea your-message] </p>

<p>[submit "Send"]</p>
7
john

[text* your-name default:get]フィールドは、同じ名前(「your-name」)のGET変数からデフォルト値を取得します。追加のクエリ文字列でフォームのページのURLにアクセスして、これを試してください。

http://example.com/contact/?your-name=John+Smith

しかし、1つのフォームタグに2つ以上のデフォルトオプションがある場合はどうでしょうか。このフォームタグの場合を考えてみましょう:

[text* your-name default:get default:post_meta "Your Name"]

11
mehedi101

この質問はすでに回答済みですが、プラグインを必要としないソリューションを探している人のために、私は以下を実行することを選びました。

最初に、Wordpressダッシュボードを介してプラグイン内からフォームを作成しました。URLからパラメーターを保持するフィールドを追加し、IDを割り当てました。

_[text page-name class:form-control id:source minlength:2 maxlength:80]_

次に、パラメーターをフォームに渡すリンクを追加しました。

_<a href='http://mycoolwebsite.com/contact?id=homepage'>Contact Us</a>_

次に、いくつかのJavascriptJQueryを使用して、URLからidパラメータを取得し、それをフォームの入力の値として設定します。 (getParameterByName(name,url)関数はこの回答から取得されました: JavaScriptでクエリ文字列値を取得するにはどうすればよいですか?

_function getParameterByName(name, url) {
    if (!url) url = window.location.href;
    url = url.toLowerCase(); 
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
}
var param = getParameterByName('id');
jQuery('#source').hide();
jQuery('#source').prop('disabled', true);
jQuery('#source').attr('value', param);
jQuery('#source').val(param);
_

また、入力フィールドを非表示にして無効にし、表示されないようにしたり変更したりできないようにします(簡単に)。 CSSを使用して入力フィールドも非表示にします

_#source{visibility:hidden}_

このようにして、サイト内の任意の場所からフォームにリンクし、ユーザーの出所のソースを追加して、受信したメールに配置できます。

この方法で問題は見られず、プラグインを使用する必要がなくなります。 Javascriptに依存することは理想的ではないと思いますが、サイト上の多くのプラグインを使用することは理想的ではありません。

これが代替を探している人を助けることを願っています。私はそれを改善する方法についての提案に開いているので、私はこのように人々の意見を知りたいです。

4
Javacadabra

最初にフォームフィールドに一意のテキストを設定し、フックを使用して目的の値に置き換えることができます。そして、プラグインは必要ありません。

例。フォームコード:

<p>Phone<br />
[text phone "PHONE_VALUE"] </p>

functions.php:

add_filter( 'wpcf7_form_elements', function( $form ) {
  $form = str_replace( 'PHONE_VALUE', $_GET['phone'], $form );
  return $form;
} );

uRL:

example.com/page?phone=111111
1
Mario62RUS

このように 記事

選択リストに値を送信する場合は、フィールドコードにパラメーターdefault:getを追加することで簡単に実行できます。

[select* the-recipient default:get "Employee One|[email protected]" "Employee Two|[email protected]" "Employee Three|[email protected]"]

次に、GETリクエストで次のようにパラメータを送信します。

http://yourdomain.com/contact/?the-recipient=Employee%20Two
0
buzibuzi