我正在构建一个自定义的Wordpress主题,我正在尝试通过管理面板添加使用自定义背景的功能。我使用了WP codex中给出here的示例。 我正在使用WordPress 3.5.2
我正在获取后台选项,这一切似乎都能正常工作,直到我实际查看页面。我注意到它添加了一个内部样式,它指的是一个类名为“custom-background”的主体,但是主体的实际类是“customize-support”。 当我使用Chrome的调试调整它们时,它应用了正确的样式,所以它是某个Wordpress函数中的错误吗? 我试图找到它会给身体上课但却找不到任何东西的地方。
来自主题的functions.php
<?php
/*
* Adds the custom header option to the theme
*/
function addthemeoptions(){
//Default values of the header image
$header_defaults = array(
'default-image' => '%s/images/header.png',
'random-default' => false,
'flex-height' => false,
'flex-width' => false,
'default-text-color' => '',
'header-text' => false,
'uploads' => true,
'wp-head-callback' => '',
'admin-head-callback' => '',
'admin-preview-callback' => '',
);
//Adds the support to use custom header images
add_theme_support( 'custom-header', $header_defaults );
$background_defaults = array(
'default-color' => '#000000',
'default-image' => '',
'wp-head-callback' => '_custom_background_cb',
'admin-head-callback' => '',
'admin-preview-callback' => ''
);
add_theme_support( 'custom-background', $background_defaults );
}
//Execute our custom theme functionality
add_action( 'after_setup_theme', 'addthemeoptions' );
?>
在头部生成样式
<style type="text/css" id="custom-background-css">
body.custom-background { background-color: #0a0a0a; }
</style>
来自调试的正文标记
<body class=" customize-support" style>
提前致谢
修改 我找到了一个临时修复,只是将正确的类值添加到我的header.php中,其中body标签被打开但我觉得应该有一个更完整的解决方案,因为我很难纠正应该由函数正确生成的东西在WordPress中?
答案 0 :(得分:3)
header.php 中的正文标记应该是:
<body <?php body_class(''); ?>>
答案 1 :(得分:0)
我遇到了同样的问题,我在法典custom background的最后一行中发现:**要覆盖此默认行为,您必须提供_custom_background_cb()函数的替代项。 **
所以我试图通过编码我自己的函数 my_custom_background_cb 来克服它:
$args_background = array(
'default-image' => '',
'default-preset' => 'default', // 'default', 'fill', 'fit', 'repeat', 'custom'
'default-position-x' => 'center', // 'left', 'center', 'right'
'default-position-y' => 'center', // 'top', 'center', 'bottom'
'default-size' => 'auto', // 'auto', 'contain', 'cover'
'default-repeat' => 'repeat', // 'repeat-x', 'repeat-y', 'repeat', 'no-repeat'
'default-attachment' => 'fixed', // 'scroll', 'fixed'
'default-color' => '#fff',
'wp-head-callback' => 'my_custom_background_cb',
'admin-head-callback' => '',
'admin-preview-callback' => '',
);
add_theme_support( 'custom-background', $args_background);
function my_custom_background_cb() {
echo '<style>';
//your custom css
echo '</style>';
}
我现在正在研究如何从默认颜色部分中删除背景颜色控件。
编辑:好的,在customr.php中,只需删除默认的颜色部分,然后像这样添加您的颜色即可:
// removing the default color sections from customizer
$wp_customize->remove_section('colors');
// colors Options Section
$wp_customize->add_section('sec_colors', array(
'title' => esc_attr__('Colors Options', 'yourtheme'),
'description' => sprintf(__('Colors Options for theme', 'yourtheme')),
'priority' => 60,
));
修改2: 抱歉,第二次编辑:D,但是我发现我们需要用自定义函数 custom_custom_background_cb '当我发现错误'时替换默认的wp-head-callback函数,我还删除了所有与之相关的代码创建如下颜色选项时进行着色:
function custom_custom_background_cb() {
// $background is the saved custom image, or the default image.
$background = set_url_scheme( get_background_image() );
if ( ! $background )
return;
$style ='';
if ( $background ) {
$image = " background-image: url('$background');";
$repeat = get_theme_mod( 'background_repeat', get_theme_support( 'custom-background', 'default-repeat' ) );
if ( ! in_array( $repeat, array( 'no-repeat', 'repeat-x', 'repeat-y', 'repeat' ) ) )
$repeat = 'repeat';
$repeat = " background-repeat: $repeat;";
$position = get_theme_mod( 'background_position_x', get_theme_support( 'custom-background', 'default-position-x' ) );
if ( ! in_array( $position, array( 'center', 'right', 'left' ) ) )
$position = 'left';
$position = " background-position: top $position;";
$attachment = get_theme_mod( 'background_attachment', get_theme_support( 'custom-background', 'default-attachment' ) );
if ( ! in_array( $attachment, array( 'fixed', 'scroll' ) ) )
$attachment = 'scroll';
$attachment = " background-attachment: $attachment;";
$style .= $image . $repeat . $position . $attachment;
}
?>
<style type="text/css" id="custom-background-css">
body.custom-background { <?php echo trim( $style ); ?> }
</style>
<?php
}
再次快乐编码
答案 2 :(得分:-1)
我遇到了这个问题,刚打开一个<script type="text/javascript>
,却丢失了</script