私の目標は、WordPress で定義されたカスタム フィールドから Google コンバージョン値を設定することです。変換スクリプトはランディング ページに配置されているため、カスタム フィールド データをフォームからランディング ページに取得する必要があります。フォームの送信はサード パーティによって処理され、実際のランディング ページにはデータが返されないため、GET または POST を使用できません。
PHP セッションを使用してみましたが、このサード パーティはすべてのデータを保持しているため、PHP を使用することを妨げています。
これは私がうまくいくことを望んでいるアプローチです:
- フォームの検証は、jQuery ツールを使用して行われます。
- 次に、jQuery/AJAX を介して検証が成功した後、変数を別の php ファイルに送信する必要があります。
- 次に、ランディング ページの読み込みが開始されたら、前述の PHP ファイルからその変数を取得し、関連する場所にエコーする必要があります。
jqueryはセッションデータではなく、入力から直接データを取得しているため、フォームを使用してページでセッションを実際に開始する必要はないと考えました。コンバージョン値を入力すると、次のようになります。
<input type="hidden" id="conv" name="conv" value="90">
次に、フォームの検証:
$("#course-form-modal").validator().submit(function(e) {
// when data is valid
if (!e.isDefaultPrevented()) {
// this grabs the value from my form
var con_val = $("#conv").val();
// and this sends it...
$.post(
"../../usersession.php",
{ data: con_val }
);
}
});
次に、usersession.php にコードを取得しました... データを送信した場所:
// As I'm just trying to echo what was sent to this page, via ajax, I shouldn't need to worry about starting/retrieving a SESSION yet... right?
<?php $var_value = $_POST['data']; ?>
<div id="results">
<?php echo $var_value ?>
</div>
// この半分は後で心配できます。今は、結果を USERSESSION.PHP にエコーしたいだけです //
最後に、usersession.php からデータを取得するためのコードをランディング ページに追加しました。
session_start();
$var_value = $_SESSION['conv'];
echo $var_value;
このコードのすべてが初心者に適しているかどうかは完全にはわかりません。私はどちらかというとフロントエンドの人です...
-編集-
そうですね、少なくとも今はコードが正しいと確信しています。なんらかの理由で、まだ機能していません。現時点では、WordPress が私の javascript ファイルから usersessions.php への書き込みを禁止するかどうか疑問に思っています (参考までに、そのファイル パスは私の動作中 (動作していない) の例で絶対に設定されています)。ファイルに直接アクセスしようとすると、WordPress が 404 をスローすることがあります。もう 1 つの潜在的な問題は、サードパーティのソフトウェアである Vanillasoft にある可能性があります。フォームのアクションタグにスクリプトへのリンクがありますが、フォーム> usersession.php >とランディングページの間のデータの送受信をバイパス/強制終了できますか?
余談ですが、usersession.php がデータを受信しているかどうかをテストする方法について誰かが素晴らしいアイデアを持っている場合は、お知らせください。私はもともとこのコードを持っていましたが、何も返されず、何かを送信した後にファイルに直接リンクすると(ファイルのURLをブラウザに貼り付けるだけのように)、「0」が返されます...
if(isset($_POST['conv'])) {
session_start();
$_SESSION['conv'] = $_POST[''conv''];
echo "1";
} else {
echo "0";
}