我正在制作一个基于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' );
但这似乎没有做任何事情。
子主题是否有办法覆盖自定义徽标支持参数?
答案 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
的原因是10
是add_action()
上的默认优先级:https://developer.wordpress.org/reference/functions/add_action/#parameters