我正在制作一个主题,其中我将使用此标准功能添加对自定义背景功能的支持:
// fig. 1
<?php
function custom_theme_support() {
add_theme_support(\'custom-background\', array(
\'default-color\' => \'333333\',
\'wp_head_callback\' => \'_custom_background_cb\'
));
}
add_action(\'after_setup_theme\', \'custom_theme_support\');
?>
然而,我对默认函数的使用方式感到满意
_custom_background_cb
处理设置,因为它只提供了将背景图像水平居中的选项。所以我在我的
functions.php
文件:
// fig. 2
<?php
function themeslug_custom_background() {
$background = set_url_scheme(get_background_image());
$color = get_background_color();
if ($color === get_theme_support(\'custom-background\', \'default-color\')) {
$color = false;
}
if (!$background&&!$color) {
return;
}
$style = $color ? "background-color: #$color;" : false;
if ($background) {
$style = "background: #$color url(\'$background\') no-repeat fixed; background-size: cover; background-position: center;";
}
?>
<style type="text/css" id="custom-background-css">
body.custom-background {
<?php echo trim($style); ?>
}
</style>
<?
}
?>
并更改了
wp_head_callback
如图1所示:
// fig. 3
function custom_theme_support() {
add_theme_support(\'custom-background\', array(
\'default-color\' => \'333333\',
\'wp_head_callback\' => \'themeslug_custom_background\'
));
}
add_action(\'after_setup_theme\', \'custom_theme_support\');
然而
_custom_background_cb
仍然调用函数,而不是
themeslug_custom_background
我创建了。
我知道此功能将使wp admin/customize窗口中的一些背景设置无效,但这是为了一个非常小的主题,对我来说,将背景居中比在wp admin中更改此设置更重要。