我正在尝试在自定义背景中添加对CSS3属性background-size,background-clip和background-origin的支持。为此,我修改了完全后台管理器插件(一个非常简单的插件,每页设置自定义背景),以设置这些属性。
它们似乎在管理界面中正确设置和存储,但在生成设置它们的样式标记时,新值将被忽略;唯一支持的属性似乎是http://codex.wordpress.org/Custom_Backgrounds
中提到的属性自定义背景由Wordpress本身生成,而不是主题。我知道主题必须通过声明自身兼容并使用
设置默认值来启用它
add_theme_support( 'custom-background', $defaults );
and Wordpress will generate the custom-background css code
<style type="text/css" id="custom-background-css">
body.custom-background { background-color: #bdd96e; }
</style>
插件本身似乎使用
add_filter( 'theme_mod_background_image', array( $this, 'fbm_background_image' ), 25 );
设置/覆盖默认的css属性,如'theme_mod_background_image',但它只打印受支持/覆盖变量的css。换句话说,Wordpress不知道theme_mod_background_size,所以它不能覆盖它来打印它。
有没有办法将这些属性添加到Wordpress本身?我正在阅读admin / custom-background.php的代码,但是我没有看到对支持的属性列表的任何引用。他们在一些隐藏的包含?在数据库本身?如果我要设置它们,wordpress会生成CSS吗?
我希望我已经正确解释了它。我没有发现任何相关信息。大多数插件使用jQuery在javascript中设置这些值,而不是使用正确的CSS属性。如果没有,关于最新版本的wordpress本身的内部工作原理的教程可以作为调查的线索。
提前致谢
答案 0 :(得分:1)
将回调参数wp-head-callback
与自定义函数一起使用:
add_theme_support( 'custom-background', array( 'wp-head-callback'=> 'my_custom_background_cb' ) );
您可以替换复制和修改它的整个默认_custom_background_cb
回调函数,但如果没有必要,我不想复制代码,所以我会这样做:
function my_custom_background_cb() {
ob_start();
_custom_background_cb();
$buffer = ob_get_clean();
$my_style = "
background-size: 80px 60px;
background-clip: border-box;
background-origin: content-box;
";
echo str_replace('</', $my_style.'</', $buffer);
}
我从_custom_background_cb
获取原始代码,然后我可以在回显之前添加我的样式代码。
显然,您需要输入$my_style
属性数据。
答案 1 :(得分:1)
我正在阅读here,它似乎就像使用css引用你的自定义函数一样简单,就像管理头回调的参数一样简单......
<?php
add_theme_support( 'custom-background', array('wp-head-callback' => custom_function));
function custom_function() {
echo '<style>';
//your custom css
echo '</style>';
}
答案 2 :(得分:0)
为什么不使用admin head回调函数添加其他CSS?