Php 如何在WordPress中声明函数一次

Php 如何在WordPress中声明函数一次,php,wordpress,performance,function,variable-declaration,Php,Wordpress,Performance,Function,Variable Declaration,我有一个带有广告插入器插件的WordPress网站 这个插件有不同的块,我可以在其中插入一个php代码,以在文章的不同位置显示它(例如,在标题之后,在第1段之后,在内容之后…) 我有一个php脚本,我想在文章中的两个不同位置打印两次。问题是我更喜欢只声明一次sample变量 因此,我创建了两个块: 第1区: <?php $sample="test"; print $sample ?> 第2区: <?php print $sample ?> 第一个块在页面中正确

我有一个带有广告插入器插件的WordPress网站

这个插件有不同的块,我可以在其中插入一个php代码,以在文章的不同位置显示它(例如,在标题之后,在第1段之后,在内容之后…)

我有一个php脚本,我想在文章中的两个不同位置打印两次。问题是我更喜欢只声明一次
sample
变量

因此,我创建了两个块:

第1区:

<?php
$sample="test";
print $sample ?>

第2区:

<?php
print $sample ?>

第一个块在页面中正确呈现,但第二个块显示空白,而不是
test
。如果我只在一个块中复制这两个代码,一切都正常,但我需要在两个不同的位置显示它们

这是一个基本的WordPress/PHP问题。
如何编辑第二个块而不再次声明
sample
变量?

在您的示例中,您没有任何函数-
$sample
是一个变量。它的设置也不正确,您需要将
test
括在引号中,如
“test”

根据您放置此代码的位置,变量
$sample
未设置在第二个“块”中,因此当您回显该值时,它为空

要创建一个可用于一致输出相同值的函数,请在
/wp content/themes/your-THEME/functions.php
文件中添加一个新函数。用主题的名称替换
YOUR-THEME
(如果您正在使用下载的内容,我建议先创建一个)

添加新功能

// create a function 
function echo_sample(){
    // set the variable $sample to a value of "test"
    $sample = "test";

    // echo the value of the $sample variable
    echo $sample; 
}
<?php echo_sample(); ?>
然后,通过将该函数放置在PHP标记中,从代码中的其他位置调用该函数,如下所示:

呼叫功能

// create a function 
function echo_sample(){
    // set the variable $sample to a value of "test"
    $sample = "test";

    // echo the value of the $sample variable
    echo $sample; 
}
<?php echo_sample(); ?>


这将导致“test”被打印到屏幕上。

要创建函数,您需要使用关键字
function
,然后是函数名,然后是函数体

function function_name($par=1){
    //function body here.
}

调用函数:
function_name()

您确定要共享整个代码吗?看起来您是在给变量赋值,但您说的函数是$sample=test;在函数标记内,即函数xyx(){$sample=test;}?对不起,代码是正确的。我指的是变量,不是函数,没关系。奇怪的是,为什么变量的值在第二次调用时被覆盖为空?在第二次调用之前,是否有其他事情可能会将变量$sample重新分配给=“这就是为什么它会打印空白值?我猜插件会将块呈现为独立的,因此第二个块不会获得在第一个块中分配的变量值。如果不知道插件的所有工作,很难精确定位。也许发布到插件支持论坛可能会让你得到解决方案。另外,我建议你在问题中添加插件名称和url以及更多细节,也许熟悉该插件的人可以解释一下这些广告值是如何在该插件中分配的。当我使用call函数时,我猜它会运行该函数。因此,如果我在帖子中使用2“echo”,它会运行两次(问题是上面的代码只是一个示例,但实际上我有一个调用Amazon API的PHP脚本,我不能在一个页面中调用它们两次(我讨厌重载)。不幸的是,您的解决方案似乎仍然存在问题。有什么想法吗?我不确定是否理解-您希望调用amazon api并缓存结果,以便页面不会发出两个api请求?