1

wordpressテーマのheader.phpファイルの一番上で簡単なフォームを実行するには、次のようにします。

<?php
//deal with theme embeded forms
if ($_POST['enquery_page_loop']) {
    $call_time = $_POST['call_time'];
    $f_name = $_POST['r_name'];
    $email = $_POST['email'];
    $phone = $_POST['phone'];

    $admin_email = get_option('admin_email');
    $message = "A callback request has been recieved.\r\n\r\n";
    $message .= "Name: ".$f_name."\r\n";
    $message .= "Time to Call: ".$call_time."\r\n";
    $message .= "Email: ".$email."\r\n";
    $message .= "Phone: ".$phone."\r\n";

    mail ($admin_email, "A Callback request was recieved via the website", $message, 'FROM:'.$admin_email);
    $loop_mail_done = '1';
    echo $loop_mail_done;
}
?>

<?php get_header(); ?>page.php ファイルを呼び出した後、$loop_mail_done;変数がまったく定義されていなかったかのように、変数に完全にアクセスできなくなります。それでも、header.php ファイルの下部からエコーすると、正しく定義されています。

この変数をどのように失っているのか理解できません。私はチェック/試しました:

  • global $loop_mail_done;page.php で宣言する
  • 正しいスコープ(私が見る限り)
  • 変数に対するチェック済みunsetまたは同様のアクション
4

2 に答える 2

2

を使って言われているように

global $loop_mail_done;

両方のファイルで問題を解決します。

この問題の理由は、header.php と page.php/index.php などの両方が、ページのレンダリング時に関数によって呼び出されることです。同じスコープで何かを書いたように見えますが、実際には2つの別々の関数の2つの変数です。

別の方法として、$GLOBALS を使用して変数を格納することもできますが、グローバルに宣言することもできます。

于 2013-10-03T14:27:43.770 に答える
1

設定

global $loop_mail_done;

この変数を使用する前に、page.php と header.phpの両方で。

于 2013-10-03T13:59:57.063 に答える