Child Theme Variables

时间:2013-01-23 作者:Jennifer Michelle

在我的主题中,我使用了以下内容:

<div id="brickwall" data-brickinvert="<?php echo brickAlign(); ?>">
我将代码放入函数中。php:

function brickAlign() {
    $a = "true";
    return $a;
}
现在在儿童主题中,我想将$a更改为false。

然后在子主题中,我的html如下所示:

<div id="brickwall" data-brickinvert="false">
我希望函数名保持不变,这样就不必复制所有文件来更改一个变量。但我当然不能在child中使用同名函数。

我尝试使用global,但它导致了错误。我也试过做过滤器,但我的bleeping电脑也没有。原因是,我可以使用html数据属性将一个变量传递到我的Masonry jQuery脚本中,以便根据我所处的主题(父主题还是子主题)将砖块与顶部或底部对齐。谢谢你的建议!

2 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

您可以使函数可过滤:

function brickAlign() {
    $a = "true";
    return apply_filters( \'brick_align\', $a );
}
然后,在子主题中添加过滤器回调:

function child_theme_filter_brick_align( $a ) {
    return \'false\';
}
add_filter( \'brick_align\', \'child_theme_filter_brick_align\' );
或者,您可以向函数传递一个参数:

function brickAlign( $value = \'true\' ) {
    // Note: you should add some error-checking here
    $a = $value;
    return $a;
}
然后,在子主题中,按如下方式调用函数:

<?php brickAlign( \'false\' ); ?>

SO网友:Javier Villanueva

您应该使主主题中的函数可插入,如下所示:

if ( !function_exists(\'brickAlign\') ) {
    function brickAlign() {
        $a = "true";
        return $a;
    }
}
这样你就可以定制brickAlign() 子主题中重写父主题函数的函数:

function brickAlign() {
    $a = "false";
    return $a;
}

结束

相关推荐

hooks & filters and variables

我是updating the codex page example for action hooks, 在游戏中完成一些可重用的功能(最初是针对这里的一些Q@WA)。但后来我遇到了一个以前没有意识到的问题:在挂接到一个函数以修改变量的输出后,我再也无法决定是要回显输出还是只返回它。The Problem: 我可以修改传递给do_action 用回调函数钩住。使用变量修改/添加的所有内容仅在回调函数中可用,但在do_action 在原始函数内部调用。很高兴:我将其修改为一个工作示例,因此您可以将其复制/粘贴