我的功能在WordPress中不起作用,但在外部,它起作用了--我错过了什么?

时间:2013-07-14 作者:Fran

我在我为WordPress创建的页面中使用了一个函数,它正在工作,但函数不工作,没有显示任何结果。例如:

<?php
function tester()
{

global $pol;

$pol="ok all fine and working";
}

tester();

echo $pol;
?>
如果我在WordPress之外使用这个函数,它会工作得很好,但问题是,当我尝试在我创建的文件中使用它时,它不会工作。

我不知道在WordPress中使用它与在其他PHP文件中使用它有什么区别。

3 个回复
SO网友:Milo

WordPress模板文件通过函数包含,该函数将这些包含文件的范围放置在这些函数中。这就是为什么你必须两次宣布它是全球性的。下面是一个示例,您可以尝试使用3个简单的php文件来说明这一点,而无需使用WordPress:

主要的php

function include_file_1(){
    include \'1.php\';
}
function include_file_2(){
    include \'2.php\';
}
include_file_1();
include_file_2();
1。php

function tester(){
    global $pol;
    $pol="ok all fine and working";
}
2。php

tester();
echo $pol;
如果你测试一下,你会发现你从echo $pol, 这不在范围之内。现在编辑2.php 宣布global $pol 首先:

global $pol
tester();
echo $pol;
现在你得到了预期的结果。

SO网友:JMau

这是一个PHP问题。这是因为您没有使用正确的方法检索全局。改用magic var\\u转储:

global $pols;
var_dump($pol);
您还可以使用:

$GLOBALS[\'$pol\'] 
然后:

echo tester();

SO网友:s_ha_dum

要使用全局变量,需要在定义它之前将其声明为全局变量,然后将其拉入scope 具有global $var_name 在使用之前。你没有那样做。你只做了一半。

function tester()
{
    global $pol;

    $pol="ok all fine and working";
}
tester();

global $pol;
echo $pol;
但你为什么要用一个全球的呢?为什么不直接返回值?您的代码将更短、更整洁。

function tester()
{
    return "ok all fine and working";
}
echo tester();

结束