Php wordpress模板标题中定义的变量在get_标题下不可访问

Php wordpress模板标题中定义的变量在get_标题下不可访问,php,wordpress,Php,Wordpress,在我的wordpress theme 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']

在我的wordpress theme 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;
}
?>

在page.php文件中调用
后,
$loop\u mail\u完成变量完全不可访问,就好像从未定义过一样。然而,当我从header.php文件的底部回显它时,它的定义是正确的

我无法理解我是如何失去这个变量的。 我已检查/尝试:

  • 声明
    global$loop\u mail\u已完成
  • 正确的范围(据我所知)
  • 已检查变量上的
    unset
    或类似操作
设置

global $loop_mail_done;

在使用此变量之前,请同时在page.php和header.php中。

正如使用

global $loop_mail_done;
在这两个文件中,将解决问题

问题的原因是header.php和page.php/index.php等都是在页面呈现时由函数调用的。虽然在你看来你好像在同一个范围内写了一些东西,但它们实际上是两个独立函数中的两个变量


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

干杯!顺便说一句,你知道我为什么不在范围内吗?不,不是Wordpress内部专家:)