覆盖WordPress子主题中的自定义徽标参数

时间:2017-03-03 23:38:35

标签: php wordpress

我正在制作一个基于Shapely的儿童主题。在Shapely的functions.php中,声明了自定义徽标支持。

/**
     * Add support for the custom logo functionality
     */
    add_theme_support( 'custom-logo', array(
        'height'     => 55,
        'width'      => 136,
        'flex-width' => true,
    ) );

在我的孩子主题functions.php中,我尝试写作:

function override_shapely_customlogo() {
    add_theme_support( 'custom-logo', array(
       'width'      => 168,
       'flex-height' => true,
    ) );
}
add_action( 'after_setup_theme', 'override_shapely_customlogo' );

但这似乎没有做任何事情。

子主题是否有办法覆盖自定义徽标支持参数?

1 个答案:

答案 0 :(得分:6)

进行了一些挖掘,我肯定遇到了一些错误的线索,但我到了那里。事实证明,你绝对可以覆盖theme_support函数。但是,您的代码具有与Shapely完全相同的优先级和操作挂钩,因此最后执行的代码将胜出。

并且(这是需要进行一些研究的一点)儿童主题的functions.php实际上在父主题之前被执行

  

[T]他的一个子主题的function.php没有覆盖它的对应物   来自父母。相反,它除了父母之外还被加载   的functions.php。 (具体来说,它是在父母之前加载的   文件。)

From the Codex,强调我的。因此,我们所要做的就是为您的代码提供更高级别的执行优先级。

<?php
function override_shapely_customlogo() {
        add_theme_support( 'custom-logo', array(
             'width'      => 168,
             'flex-height' => true,
        ) );
}
add_action( 'after_setup_theme', 'override_shapely_customlogo', 11 );
?>

编辑:只是想添加,我在此处优先级11的原因是10add_action()上的默认优先级:https://developer.wordpress.org/reference/functions/add_action/#parameters