在所有WordPress页面上使用变量的最佳方法

use*_*143 15 php variables wordpress global-variables

我正在构建一个自定义主题,其中包含许多我希望在整个过程中使用的变量.

例:

$tv     = $options['tv'];
$movies = $options['movies'];
$print  = $options['print'];
//....and about 50 more.
Run Code Online (Sandbox Code Playgroud)

为此,我只是将它们全部放在一个名为vars.php的文件中,然后在主题的header.php中包含它...

require_once('vars.php');
Run Code Online (Sandbox Code Playgroud)

虽然这确实有效,但它并不是最好的方式.我在很多场合读过使用全局变量(大概是在function.php中)并不是一个好主意,但这是真的吗?

但是如果在functions.php中使用全局变量(甚至很多都是)这是正确的,那么这是正确的方法吗?:

global $tv;
$tv     = $options['tv'];

global $movies
$movies = $options['movies'];

global $print
$print  = $options['print'];
Run Code Online (Sandbox Code Playgroud)

sha*_*ver 8

最好的方法是在functions.php或插件的主插件文件中显式定义所有变量.我已经证实这是最流行的插件,包括akismet使用的方式.具体来说,你需要这样做.

define( MYVAR_TV, $options['tv'] );
define( MYVAR_MOVIES, $options['movies'] );
define( MYVAR_PRINT, $options['print'] );
Run Code Online (Sandbox Code Playgroud)

在这些之后,你可以随心所欲地使用它们

echo MYVAR_TV;
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.

  • @ user3256143这是最佳做法.向前迈出一步,您可以创建一个短代码来从WYSIWYG访问变量. (2认同)

小智 8

使用全局是好的,但不鼓励(你可以在这里阅读更多PHP中的全局变量被认为是不好的做法吗?如果是这样,为什么?).您可以考虑使用Singleton:

<?php
class GlobalVariable {
    /**
     * @var array
     */
    public static $option = [];
}

// You can set the variable using this way
GlobalVariable::$option['movies'] = 1;

// And get the variables using that array
print_r(GlobalVariable::$option);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮到你.


All*_*ins 2

在functions.php 中创建一个返回变量数组的函数怎么样?

例子:$options = get_my_custom_vars();