wordpress模板头中定义的变量在get_header下面不可访问

时间:2013-10-03 12:47:11

标签: php wordpress

我有以下内容,在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;
}
?>

在page.php文件中调用<?php get_header(); ?>后,$loop_mail_done;变量完全无法访问,就好像它从未定义过一样。然而,当我从header.php文件的底部回显它时,它被正确定义。

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

  • 在page.php
  • 中声明global $loop_mail_done;
  • 正确的范围(据我所见)
  • 检查unset或对变量的类似操作

2 个答案:

答案 0 :(得分:2)

正如已经说过的那样使用

global $loop_mail_done;
两个文件中的

将解决问题。

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

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

答案 1 :(得分:1)

设置

global $loop_mail_done;

两个 page.php和header.php之前使用此变量。