从unctions.php获取变量数据到模板WordPress(不带全局变量)

时间:2020-07-12 作者:Chris

我有wordpressfunctions.php 文件

此示例仅适用于一个变量,但我需要多个变量

function variables() {
   $var1 = \'lorem\';
    return $var1;
}
在前面的模板结果中"lorem":

echo variables();
工作正常,但如果我有许多变量,如何显示它?

示例:

echo variables(\'var1\');
echo variables(\'var2\');
echo variables(\'etc\');
我找到了一个使用全局变量的解决方案,但我不喜欢使用它。

编辑:

在里面functions.php 添加变量:

$some = "lorem 1"
$some2 = "lorem 2"
$some3 = "lorem 3"
然后在主题中显示

<?php echo some(); ?>
<?php echo some2(); ?>
<?php echo some3(); ?>

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

你必须朝相反的方向思考:不要pull 模板中的变量,push 让他们参与进来。模板应该尽可能简单,不应该知道代码其余部分的任何内容,例如函数名。

换句话说:使用挂钩。

在模板中:

// the numbers are just context examples
do_action( \'something\', \'one\' );
do_action( \'something\', \'two\' );
do_action( \'something\', \'three\' );
在您的functions.php, 向该操作添加回调:

// 1, 2, 3 are your variables
add_action( \'something\', function( $context ) {
    switch ( $context )
    {
        case \'one\':
            echo 1;
            break;
        case \'two\':
            echo 2;
            break;
        case \'three\':
            echo 3;
            break;
        default:
            echo \'Context parameter is wrong!\';
    }
});
当然,您还可以在回调处理程序中回显多行并执行一些更复杂的操作。

相关推荐

Problem in functions.php file

我正在尝试使用functions.php. 以下是我迄今为止所做的工作: <?php function blogroom() { wp_enqueue_style(\'bootstrap\', get_stylesheet_directory_uri() . \'/assets/lib/bootstrap/dist/css/bootstrap.min.css\'); wp_enqueue_style(\'loade