我有以下内容,在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文件的底部回显它时,它被正确定义。
我无法理解我是如何失去这个变量的。 我已经检查过/尝试过:
global $loop_mail_done;
unset
或对变量的类似操作答案 0 :(得分:2)
正如已经说过的那样使用
global $loop_mail_done;
两个文件中的将解决问题。
问题的原因是header.php和page.php / index.php等都是由页面渲染时的函数调用的。虽然你看起来像是在同一个范围内写了一些东西,但它们实际上是两个独立函数中的两个变量。
另一种方法是使用$ GLOBALS来存储变量,但同时将其声明为全局变量。
答案 1 :(得分:1)
设置
global $loop_mail_done;
在两个 page.php和header.php之前使用此变量。