1

我在 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(一些钩子、functions.php 修改或其他任何东西),但我无法找到如何做到这一点。我搜索了所有没有结果的主题文件:(

任何人都知道,怎么做(当然,不修改 wp 核心文件 - 只是主题修改或插件)

4

3 回答 3

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将此特定样式添加到正文标记。现在您可以决定如何实现背景图像。

于 2015-04-17T13:13:29.210 回答
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;
于 2014-03-26T14:06:34.580 回答
0

这正是我一直在寻找的东西:http ://wp.tutsplus.com/articles/tips-articles/modifying-custom-background-feature-for-any-html-element-you-want/

于 2013-03-23T20:18:56.213 回答