【问题标题】:variable defined in wordpress template header inaccessible below get_header在 get_header 下面无法访问 wordpress 模板标题中定义的变量
【发布时间】:2013-10-03 12:47:11
【问题描述】:

我有以下内容,可以在我的 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 文件中调用&lt;?php get_header(); ?&gt; 后,$loop_mail_done; 变量完全无法访问,就好像它从未定义过一样。然而,当我从 header.php 文件的底部回显它时,它的定义是正确的。

我不知道我是如何失去这个变量的。 我已经检查/尝试过:

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

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

    正如已经说过的使用

    global $loop_mail_done;
    

    在这两个文件中都会解决问题。

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

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

    【讨论】:

      【解决方案2】:

      设置

      global $loop_mail_done;
      

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

      【讨论】:

      • 干杯!顺便说一句,你知道我为什么会超出范围吗?
      • 不,不是 Wordpress 内部的专家 :)
      猜你喜欢
      • 2018-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-05
      • 2013-08-27
      • 2012-05-04
      • 1970-01-01
      相关资源
      最近更新 更多