gpt4 book ai didi

php - WordPress - 在 get_header 中包含变量不起作用

转载 作者:行者123 更新时间:2023-12-04 14:33:04 24 4
gpt4 key购买 nike

出于某种原因,每当我尝试将变量放入 get_header 中时在 WordPress 中我的自定义 page.php 中,它无法识别该值并重置为默认值。

这是我的代码:

$header_choice = of_get_option( 'headerstyle', 'default' );
get_header( $header_choice );

of_get_option 是来自 Options Framework 的函数

这是因为我使用的是多站点,如果高级用户可以自己更改每个站点的标题,而不必深入研究代码或不必询问我们开发人员,那就太好了。

如何在 get_header 中使用变量所以我可以动态分配值?

最佳答案

您遇到了 variable scope问题。 WordPress 通过它自己的函数包含标题 get_header()并且您的模板变量不可用。您可能会发现其他人建议您使用 include('header.php')但你不要也想这样做。 ( get_header() 触发其他 WordPress 特定操作,保留它很重要)。

您有多种选择,其中之一是我的偏好。

首先,您可以使用 global关键字将您的变量提升到全局范围,如下所示:

global $header_choice = of_get_option( 'headerstyle', 'default' );
get_header();

然后,在 header.php 里面您将使用 global 关键字再次访问它,如下所示:
// from inside header.php
global $header_choice;
if ($header_choice == 'some_option') {
// do some work
}

但这会稍微污染全局范围(并且它可能会变得杂乱无章,特别是如果您开始在其他页面和其他事物中使用全局变量)。因此,您还可以使用 $GLOBALS 来确定全局变量的范围。数组并将所有主题的全局变量嵌套到它们自己的“命名空间”数组中,如下所示:

functions.php初始化您的 $GLOBALS多变的
// from inside functions.php
$GLOBALS['THEME_NAME'] = array();

在您的模板文件中,初始化您的主题选项
$GLOBALS['THEME_NAME'] = array();
$GLOBALS['THEME_NAME']['header_choice'] = of_get_option( 'headerstyle', 'default' );
get_header();

在您的 header.php您可以像这样访问它的文件:
// from inside header.php
if ($GLOBALS['THEME_NAME']['header_choice'] == 'some_option') {
// do some work
}

关于php - WordPress - 在 get_header 中包含变量不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24780982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com