我在WP中使用默认主题的子主题,我更改了背景图像(在wp-admin中)...它是用wp_head()生成的; header.php中的函数...输出源代码如下所示:
<style type="text/css" id="custom-background-css">
body.custom-background { background-color: #fffffe; background-image: url('http://example.com/wp-content/uploads/header.jpg'); background-repeat: no-repeat; background-position: top center; background-attachment: fixed; }
</style>
由于某种原因,我需要修改图像的url(一些hook,functions.php修改或其他任何东西),但我无法找到如何执行此操作。我搜索了所有主题文件,没有任何转发:(
任何人都知道,该怎么做(当然,不修改wp核心文件 - 只是主题修改或插件)
答案 0 :(得分:4)
说实话,我不是WordPress的粉丝,为任何主题添加不可调整的功能。这就是我解决它的方式。我从custom-background
标记中删除了body
类。希望它对某人有用。
function disable_custom_background_css($classes)
{
$key = array_search('custom-background', $classes, true);
if($key !== false)
unset($classes[$key]);
return $classes;
}
在致电body_class()
之前,最好在functions.php
add_filter('body_class', 'disable_custom_background_css');
这可以防止wp_head
中的脚本将此特定样式添加到body标记中。现在您可以决定如何实现背景图像。
答案 1 :(得分:1)
WP tuts文章中的代码对我不起作用,但我设法做了一些修改以使其正常工作。
global $wp_version;
if ( ! function_exists( 'change_custom_background_cb' ) ) :
function change_custom_background_cb() {
$background = get_background_image();
$color = get_background_color();
if ( ! $background && ! $color )
return;
$style = $color ? "background-color: #$color;" : '';
if ( $background ) {
$image = " background-image: url('$background');";
$repeat = get_theme_mod( 'background_repeat', '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', 'left' );
if ( ! in_array( $position, array( 'center', 'right', 'left' ) ) )
$position = 'left';
$position = " background-position: top $position;";
$attachment = get_theme_mod( 'background_attachment', 'scroll' );
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">
.custom-background { <?php echo trim( $style ); ?> }
</style>
<?php
}
if ( version_compare( $wp_version, '3.4', '>=' ) ) {
add_theme_support( 'custom-background', array( 'wp-head-callback' => 'change_custom_background_cb','default-color' => 'fff' ) );
}
else {
add_custom_background('change_custom_background_cb');
}
endif;
答案 2 :(得分:0)