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 等都是在页面呈现时由函数调用的。虽然您看起来像是在同一范围内编写了一些东西,但它们实际上是两个单独函数中的两个变量。

另一种方法是使用 $GLOBALS 来存储变量,但也可以将其声明为全局变量。

于 2013-10-03T14:27:43.770 回答
1

global $loop_mail_done;

在使用此变量之前page.php 和 header.php 中。

于 2013-10-03T13:59:57.063 回答